Я работаю над проектом Android, в котором я должен показать автономную карту с помощью mbtiles. Есть ли какой-нибудь учебник, который показывает, как установить mbtiles в проекте Android.
Код для отображения mbtiles Tilemills в проекте Android
Ответы (1)
извините за г-на Очевидность, но похоже, что www.google.com не ваш лучший друг...
В любом случае, давайте будем конструктивны:
1.) Вы можете использовать MapBox SDK. Вот ссылка, где приведен пример как пользоваться онлайн-картой. Теперь это не очень полезно для офлайн-карт, но там вы можете найти SDK. Просто скачайте его, и там же вы найдете тестовое приложение, где вы сможете узнать, как ребята это сделали.
Я считаю, что должен быть более простой способ установить библиотеку, но мне пришлось импортировать много нового, чтобы это заработало. Кроме того, будьте осторожны, чтобы получить последние библиотеки jar, так как у меня был okhttp-urlconnection-2.0.0.jar, и приложение вылетало при отображении представления. И тут я узнал, что мне нужен jar версии 2.1.0.
2.) Для импорта офлайн-карт я нашел это ссылка полезна, так как предлагает фрагменты кода, которые облегчили мои страдания при правильном отображении карты. В случае, если ссылка умирает, код гласит:
Для начала создайте, например, метод setupMaboxOffline() в вашей активности WearActivity:
public void setupMaboxOffline() {
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setZoom(5);
mapView.setCenter(new LatLng(38.8977, -77.0365));
mapView.setTileSource(new MBTilesLayer(this, "control-room-0.2.0.mbtiles"));
}
Затем вызовите его в WatchViewStub в onCreate(). Эта заглушка используется Android Wear для выбора правильного макета (круглого или квадратного) в зависимости от формы часов пользователя.
Упомянутый выше MapView выглядит следующим образом (в обоих макетах):
<com.mapbox.mapboxsdk.views.MapView
android:id="@+id/mapview
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
Если вам понадобится свойство идентификатора mapbox в xml это SO вопрос получает ответ.
По сути, поскольку я только отобразил карту, это довольно просто... Вам нужен файл .mbtiles в папке с ресурсами. Библиотека не должна показывать ошибок ;). В вашем xml-файле вы поместили настраиваемый вид MapView.
Затем в вашей деятельности:
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setTileSource(new MBTilesLayer(this, "map.mbtiles"));
Затем вы можете добавить свои пользовательские настройки, такие как масштабирование и прочее.
Удачи с вашей офлайн-картой. :)
mapView.setMinZoomLevel(1);
что является одним из требований для отображения карты.. А также, один парень, который исследовал работу mbtiles предположил, что у вас должно быть более одного размера изображения, чтобы ваша карта отображалась правильно. Для меня, когда я создавал офлайн-карту в помещении, в некоторых точках она была размытой. Это потому, что я использовал только одно изображение. Вот ссылка.
- person zed; 27.11.2014