Search code examples
iphonegoogle-mapsopenstreetmapgiscartography

Create new geographical map data or use modified maps


I am working on an iphone application that requires routing within a limited area such as parks, historical places, popular markets or remote areas in the country.

Given that google maps, openstreetmaps or any other maps is not supposed to have the exact places of interest within the area my application is supposed to work, what is the best or possible ways to carry out this requirement ?

I know I can edit the maps (such as OSM) to mark the POIs but I don't want those to change without my permission (possibly I'll require hosting them on my server after editing ?)

I also need to provide routing and navigation support for the same area depending upon the current location of the user. According to the license:

http://code.google.com/intl/de/apis/maps/iphone/terms.html

Real time routing is not allowed if I use Google Maps.

Would it be advisable if I want to create my own map for the area.


Solution

  • In principle there's nothing to stop you taking an area of OpenStreetMap data, store this on your own server or on the device, and then just don't bring in any further updates from OpenStreetMap community, thereby eliminating any worries about OpenStreetMap contributors changing things without your permission.

    In practice you'll be needing to do some fairly in depth development work to build an iPhone app backed by some OSM data. I'm not describing an out-of-the-box solution. When implementing this, firstly you have a choice of raster format (an area of map represented as tile images) or vector format (osm XML format, or you're own format perhaps). Actually you need a vector representation to do routing calculations, but you could perhaps have a tiled raster display with route query results as an overlay. You'd need to decide if you wanted the routing calculations running on-device or running on your own server.

    Taking a chunk of OpenStreetMap data in the first place, adding to it, and keeping it separate... That's the easy bit :-)