Решение
Вопрос немного старый, но есть решение для любого, кто может использовать Qt.Решение не ограничивается платформой Windows Phone, я сделал это для Android, и оно также работает на моем рабочем столе.
В Qt вы захотите установить плагин OSM, используемый QtLocation.Это просто, быстро и легко.
Как это сделать?
Быстрая реализация может изменить класс QGeoTiledMappingManagerEngineOsm
так, чтобы он вызывал ваш собственный QGeoTileFetcher
вместо QGeoTileFetcherOsm
.Возможно, есть более эффективные способы добиться этого, но по крайней мере это работает для меня.
По сути, вы делаете сборщик, который читает плитки из файловой системы, а не из сети.Вы создаете базу данных своей файловой системы один раз, например, из онлайн-ресурса (см. Ниже), и разворачиваете ее вместе со своим приложением для автономного использования.
Откуда я могу получить плитки?
Информация о том, какполучить плитки для автономной реализации можно здесь: http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
Вот два источника для плиток, которые можно использовать бесплатно:
- Серверы проектов Open Street Maps
- Серверы Mapquest Open Tiles
Позаботьтесь о лицензировании и условиях использования.
Open Street Map
- Проект: wiki.openstreetmap.org / wiki / Main_Page
- Лицензия: www.openstreetmap.org/copyright
- Условия использования: wiki.openstreetmap.org/wiki/Tile_usage_policy
- Серверы в настоящее время называютсякак *. tile.openstreetmap.org
Плитки MapQuest-OSM
- Проект: developer.mapquest.com/web/products/open/карта
- Лицензия: opendatacommons.org/licenses/odbl/
- Условия использования: developer.mapquest.com/web/info/terms-of-use
- Серверы в настоящее время называются otile * .mqcdn.com
(Извините за странные ссылки: у меня недостаточно репутации, чтобы размещать реальные ссылки).