Оффлайн карты на PhoneGap с использованием OpenLayers и TileCache - PullRequest
6 голосов
/ 29 февраля 2012

Есть ли хорошее руководство о том, как предварительно кэшировать известную часть карты с помощью TileCache, сохранять их в базе данных мобильного приложения PhoneGap и загружать их с помощью OpenLayers?

Я прошел много уроков, но до сих пор не нашел выхода, чтобы сделать все это вместе.

1 Ответ

1 голос
/ 21 ноября 2012

Если у вас есть собственные плитки и они встроены в архив вашего приложения, вы можете использовать Leaflet для рендеринга локальных плиток. http://leafletjs.com/
Если ваши пользовательские плитки являются удаленными (размещены на сервере), вы все равно не сможете использовать их в автономном режиме.
Пожалуйста, посмотрите на этот блог.

Да, возможно использовать автономные листовки в автономном режиме, просто измените путь, используемый для плиток, на локальный путь.

Пример:
Значение по умолчанию:

// add a CloudMade tile layer with style #997
L.tileLayer('http://{s}.tile.cloudmade.com/[API-key]/997/256/{z}/{x}/{y}.png', {
    attribution: 'Map data'
}).addTo(map);

Не в сети:


L.tileLayer('file://path_to_your_tiles/{z}<em>{x}</em>{y}.png', {
    attribution: 'Map data'
}).addTo(map);

Просто убедитесь, что ваши плитки названы по одному и тому же шаблону (например: 6_17_15.png). Вы можете изменить шаблон на.

Вы можете хранить тайлы карты локально, используя структуру каталогов, соответствующую серверной, и указывать свой tileLayer на локальное местоположение тайлов. Однако следует помнить одну вещь: некоторые провайдеры тайлов карт будут расстроены, если вы скопируете их тайлы, чтобы затем хранить их локально. Они будут особенно расстроены, если вы напишите приложение, которое поощряет множество людей, которые используют приложение для этого. Такое приложение может быстро заблокироваться. См. http://wiki.openstreetmap.org/wiki/Tile_usage_policy, например. Вы всегда можете сделать свои собственные плитки для локального хранения.

...