Saturday, November 21, 2015

Offline maps for iOS and Android




Hello developer! Looking for offline maps? I have some information for you :)


My name is Roman, I'm iOS developer and once i have a project where i need to integrate offline maps. Requirements was simple, just offline map with one location, Bermuda in my case, show many pins on map, group them (clustering), have ability to tap on pin and show callout view(aka popover), tap on callout view. That's all. I spend some time by trying different SDK and here is my report.

iOS and Android

First in list is Skobbler ak Scout maps, it's Open Street Maps project as i understand, not bad maps, but they don't have clustering pin annotations at this moment, and when i add 457 pins on map, my app start eating 500+ mb of memory, it's very bad :)
http://www.skobbler.com

Nutiteq, not bad maps but i don't like it documentation, iOS example and docs says that you should use Objective-C++ but in real you can use Ojbective-C because all SDK written in Objective-C. Also i could not integrate maps as GLKView in my ViewController, instead i should Create CLKViewController and add it's view as subview to our viewController only after that maps start working, i don't even try to add pin annotations because maps below uses less memory.
https://www.nutiteq.com

MapBox, this maps use less memory then other, works faster as for me. They have two versions of SDK, old witch have all features i need and even more, and new witch don't have clustering at the moment, and i was surprised but they also don't support offline maps in new SDK, they are working on it but i'm not sure when it will be done. Also new SDK has some bugs, strange warnings in console log, i hope they fix them or i will use Nutiteq :) 
https://www.mapbox.com

MAPS.ME is Mail.Ru open source project, i'm not sure if you can use this source in you project.
https://github.com/mapsme/omim - Maps Me source.

iOS only

Very old project for offline maps, i didn't use it but MapBox fork this project for their first SDK version, it's nice background to start something new. C
https://github.com/route-me/route-me

Conclusion

First of all, think again if you really need offline maps, if you have much time better write your offline maps, but if not be ready to met a heap of problems, like offline routing, there are no SDK what supports offline routing, some SDK don't have default things like callout views, clustering etc. And even if they have what you want, don't think that it's easy to implement :)

Choose your best! Good luck!

No comments:

Post a Comment