我正在开发一个 android 项目,在该项目中我必须使用 mbtiles 显示离线地图。是否有任何教程显示如何在android项目中设置mbtiles。
2 回答
很抱歉成为 mr.Obvious,但 www.google.com 似乎不是你最好的朋友......
无论如何,让我们有建设性:
1.) 您可以使用 MapBox SDK。这是有关如何使用在线地图的示例的链接。现在,这对离线地图没有多大用处,但在那里你可以找到 SDK。只需下载它,您还可以在其中找到一个测试应用程序,您可以在其中了解这些人是如何做到的。
我相信必须有一种更简单的方法来安装库,但我必须导入很多新东西才能完成这项工作。另外,请小心获取最新的库 jar,因为我有 okhttp-urlconnection-2.0.0.jar 并且应用程序在显示视图时崩溃了。然后我发现我需要 2.1.0 版的 jar。
2.) 对于离线地图导入,我发现此链接很有帮助,因为它提供了一些代码,减轻了我正确显示地图的痛苦。如果链接失效代码状态:
例如,要开始在 WearActivity 中创建一个名为 setupMaboxOffline() 的方法:
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"));
}
然后,在 onCreate() 的 WatchViewStub 中调用它。Android Wear 使用此存根根据用户手表的形状选择正确的布局(圆形或方形)。
上面引用的 MapView 看起来像这样(在两种布局中):
<com.mapbox.mapboxsdk.views.MapView
android:id="@+id/mapview
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
如果您需要 xml 中的 mapbox id 属性,这个SO 问题就会得到答案。
基本上,因为我只显示了地图,所以这相当简单......您需要在 assets 文件夹中的 .mbtiles 文件。库需要显示没有错误;)。在您的 xml 文件中,您已经放置了 MapView 自定义视图。
然后在您的活动中:
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setTileSource(new MBTilesLayer(this, "map.mbtiles"));
然后,您可以添加自定义设置,例如缩放等。
祝您离线地图好运。:)
我已经写了一篇关于如何使用 Maplibre 或 Mapbox SDK 显示本地离线 MBTiles 文件的详细教程 -
https://medium.com/@ty2/how-to-display-offline-maps-using-maplibre-mapbox-39ad0f3c7543