Переопределить источник мозаики MapView? - PullRequest
13 голосов
/ 09 февраля 2012

Можно ли переопределить источник плиток, отображаемых в Android MapView?

У меня есть несколько листов изображений карт в базе данных, и я хотел бы использовать Google Maps MapView для их просмотра.

Кроме того, если это невозможно ... кто-нибудь знает о MapView, который позволяет это? (API OpenStreetMap ... API MapQuest ... и т. Д.)

Я ищу решение, которое не зависит от GPL / LGPL.

Ответы [ 2 ]

5 голосов
/ 09 февраля 2012

Вы можете использовать некоторые из этих библиотек: osmdroid , mapsforge .Оба они предоставляют интерфейс к некоторым базам данных интернет-карт и позволяют создавать своих собственных провайдеров карт.

Они позволяют вам иметь (и обрабатывать) автономный кеш, динамическую асинхронную загрузку карт, повторную выборку при масштабировании, добавление наложений и т. Д., Как это делает оригинальный MapView.Еще один хороший момент использования этих библиотек заключается в том, что они хорошо спроектированы для замены на месте google MapView.

Также вас может заинтересовать API Google Javascript maps, который также позволяет использовать источник пользовательских карт (см. эта ссылка ).Этот подход можно использовать при загрузке карты в ваш WebView.Но в этом случае вам все еще нужен ключ Google Maps API, и я боюсь, что вы по-прежнему будете ограничены 25000 использованиями в день.

== ОБНОВЛЕНИЕ ==

Теперь, Карты Googleдля Android (который входит в Службы Google Play) поддерживает настраиваемые плитки, поэтому больше не нужно использовать сторонние библиотеки для применения своих собственных плиток (если использование соответствует лицензионному соглашению).

3 голосов
/ 02 февраля 2013

Вы можете создать TileProvider для возврата плиток в API Карт. Затем используйте setMapType для установки MAP_TYPE_NONE, и будут видны только предоставленные вами плитки. Я знаю, что это можно сделать для MapFragment, но я не пробовал это с MapView.

См. Пример кода от Google в MapDemo TileOverlayDemo для примера.

...