Apple Map issue with around 2000 annotations - ios

We've integrate Apple native map in our iOS application. But, we're facing some performance issue when playing with Map.Can we get some better performance if we will replace Apple native map with Google map OR Do we have any other way ??

I don't think any map is going to like having 2000 annotations added to it, personally I think you need to sit down and work out a way of greatly reducing that. Perhaps only show visible annotations then add and remove them as the user scrolls around. Or if they zoom out 200 groups into 1.
It will be a job but worth it.

Related

How reliable is MKMapView caching?

I am attempting to integrate a simple map for displaying gps information into a larger ios app. The map should also be available offline.
Prerequisites and what I already know:
Apple does not offer an API for offline maps
I cannot use OpenStreetMaps, Mapbox, etc. due to licensing issues
At the moment I am using MKSnapshotter to create a screenshot of the map needed and am drawing on the screenshot. This works fine, however it takes a while for the screenshot to be made and the mapkit api is very comfortable, etc.
One thing I did notice however, is that MapKit caches quite alot of its Map even after closing the application, turning the device off and on, etc., which means that conceivably I could lock zoom, scroll, etc. when the user plans to go offline. This brings me to the question in the title:
How reliable is MKMapView caching?
For how long can I expect it to keep it's cache?

How to make a pull-up View in iOS (similiar to FourSquare)

I want to make a a sliding up like FourSquare app.
Like this:
What I want to achieve are:
The UITableView goes all the way up to UINavigationBar.
It drags along with my finger's position.
My app also have a GMSMapView below (Google Map's API, similiar to FourSquare), I don't want the map responses to my gestures on the UITableView, I want it stays still.
Works both in iOS 6 and 7 and iPhone 4,5.
Does anybody have a framework, github's link ... that can help me fulfill this ?
Thank you.
I have been working on something very similar in the past days. This answer is actually quite good, but you will suffer a bit in terms of performance. After more tweaking, I used parts of this library. You don't need to use everything, but keep in mind the following when choosing a library:
Libs that base the movement of the map on the map.centerCoordinate are less performant than libs that base the movement on the map's frame.
You can also read a bit from this tweets exchange I had.
My thoughts about what FourSquare actually did, is that in the beginning they are using a screenshot of the map, so they are not really using a MKMapView, but an UIImageView. Once you touch it and you animate it, they switch between one and another and they start using a map. I will be using Reveal App plus this to know exactly what they are doing.

Removing Apple Maps Default Annotations

I have been building an app that pins places to a map and have been using Apple Maps for it thus far. However, I've noticed that when zoomed in, the default POI annotations that Apple has included in its maps are quite distracting and make the map feel cluttered when I add my own annotations to the map as well.
I am searching for a way to turn these POIs off in the API but have yet to find the correct property or method to do so.
Just to note, it does appear possible as the new OpenTable app is using Apple Maps, but has found a way to remove these POI annotations. I would post images of each to show the difference, but apparently I need 10 reputation points to do this!
If anyone can even point me to a link that will show me how to remove these, I'm happy to read documentation.
Looking at the documentation there is a showsPointsOfInterest as of iOS 7, just set it to NO (ObjC) or false (Swift).

Timeline object type for GarageBand-type UI?

I'm working on a timeline app that needs to have a Garageband-type interface. I'm not a new developer, and I have a background in CGI and have been a Mac dev for over 20 years, but I'm a little stuck on what kind of objects to make that would represent the objects in the timeline. Are they UIViews? Drawn with QuartzCore? I Googled the heck out of the concept and looked at some books and came up empty. Any ideas on how to make these objects? I'd rather ask then start in one direction and realize there could be a better way down the road. Thanks.
Given that they allow user interaction, they're probably implemented as custom UIView subclasses. Since views are layer-backed, and since the timeline isn't flying all over the place and doing crazy complex animations, there's not really a good reason to have the UI be built directly from layers.

iOS mapview issue/question

I have an App I am developing for iOS, and the app does the following
Load and set annotations and launch corelocation and zoom to location.
There are a lot of annotations on the map, the loading from data doesn't take long, but the actual rendering of them them to the map takes a while.. so the user interface sort of stalls for a little bit, and then finally gets the corelocation and zooms to it.
While this is functional, it is less than ideal user experience.. I could invert the order, than do the corelocation zoom first and then call the add annotations, but this would cause a pause to the UI as well since annotations are added in the UI thread, and not to mention that corelocation could take a little time to get its location first too.
So, the question I guess I am asking is what is the best way to handle this? Is there some way I am unaware of to have the annotations render to the map without tying up the UI? I could show some sort of Splash Screen I guess over the map while this is going on, but that seems a cop out, and I personally hate splash screens.
Maybe the best way to do this is to show the BUSY/WORKING spinner over the map until its completed?
What is generally considered best practice?
You could use OCMapView to cluster all annotations. As already mentioned, the map can handle a bunch of annotations but the performance goes down with the number of drawn views and MKannotationViews don't make a difference.
OCmapView clusters all annotations and displays them merged in a single annotationView. try it out, it's free.
https://github.com/yinkou/OCMapView
I wound up simply doing the same thing I did with the android version, while iphone can handle the larger number of annotations far better than droid, the lazy loading approach certainly is a better overall experience for both platforms.
Thanks for the help guys.
I think your best solution would be to simply not add "a lot" of annotations to the map. MKMapView has a lot going on and it doesn't take a ton of annotations to bog it down. There are a number of creative ways that you can go about reducing the number of annotations.
If you have a lot of annotations that are grouped tightly together, consider aggregating them into a single annotation which then split apart into separate annotations when the user reaches a satisfactorily close zoom level.
Another consideration would be to default the user to a tighter zoom level and only add annotations that are currently on screen at that zoom level and position.
Do either of those options sound viable or get you thinking about another creative way to help your situation?

Resources