2016-03-04 3 views
0

Есть ли способ иметь автономную карту без необходимости подключения к сети в первый раз, чтобы кэшировать некоторые данные карты?Android офлайн карты с предварительно установленными (на apk файле) плитами

Сначала я использовал Google Maps, но, кажется, что он кэширует только некоторые из плитки и не нагружает что-нибудь первый запуск время, если у вас нет подключения к Интернету

После этого я попытался osmdroid, где она близка достаточно для логики Google Maps, но я не могу найти способ использовать ее с папкой с ресурсами, а не с предварительно установленными плитками sdk. Что делать, если у пользователей планшета нет SD-карты? Мне нужно глобальное решение, которое будет работать на любом планшете.

Мне нужны только плитки для страны, а не для всего мира!

Вот мой код до сих пор

MapView mapView = new MapView(this, 256); //constructor 

    mapView.setClickable(true); 

    mapView.setBuiltInZoomControls(true); 
    mapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE); 

    setContentView(mapView); //displaying the MapView 

    mapView.getController().setZoom(6); //set initial zoom-level, depends on your need 

    mapView.getController().setCenter(new GeoPoint(37.9513589,23.6474895)); //This point is in Enschede, Netherlands. You should select a point in your map or get it from user's location. 

    mapView.setUseDataConnection(false); 

и у меня есть свои плитки на активы/MapQuest/г/х/y.jpg

Странно, что в этой ссылке: https://github.com/osmdroid/osmdroid/wiki/Map-Sources он говорит, что :

плитки Источник определяет, что отображается изображение набор, такие как Bing, Mapquest, Mapnik и т.д. плитка по умолчанию поставщик, ищет следующее за Tile Source, активы, Offline зип/SQLite/и т.д. в (/ SDCard/о smdroid), загруженный кеш тайлов (/ sdcard/osmdroid/плитки), а затем, наконец, загрузчик.

+0

Глобальное решение без скачивания карт? Итак, вы хотите связать весь мир с вашим приложением? Это приложение будет огромным ... 10-20 ГБ, если вы используете базы данных OsmAnd ... – ByteHamster

+0

Я отредактировал свой вопрос. Извините, что не определил его раньше – arniotaki

+0

Вы читали: https://github.com/osmdroid/osmdroid/wiki/Offline-Map-Tiles –

ответ

0

Да, вы можете. Две стратегии

  1. Подготовить файл sqlite, как описано в вики, и поместить его в активы. Когда ваше приложение начнется первым, скопируйте базу данных в/sdcard/osmdroid/до того, как карта будет воссоздана/завышена.
  2. Сохраните содержимое заготовки в zip-файле. Структура файла будет выглядеть как активы/TILESOURCENAME/Z/X/Y.extension. Используя этот механизм, дроид osmdroid должен найти его, используя цепочку поставщиков по умолчанию.

Примечание: # 1 обычно быстрее.

+0

Я хотел бы избежать в зависимости от SD-карты, как я уже говорил, так как вы думаете, что использование второго подхода решит мою проблему, мгновенно перейдя в папку с ресурсами и не скопировав ее на SD-карту? – arniotaki

+0

Я использую mapView.setTileSource (TileSourceFactory.DEFAULT_TILE_SOURCE); как вы предположили, сосредоточив внимание на местоположении моих плиток и масштабировании на уровне масштабирования, который поддерживает мой плит. У меня есть плитки в активах/плитка/z/x/y, но ничего не появляется! – arniotaki

+1

sdcard в этом контексте не nessasaraly реального sdcard. – Ifor

Смежные вопросы