我已经开始使用Mapbox Android SDK构建一个Android应用程序。我想使用从Tilemill创建的自定义mbtiles文件。我正在按照这条指令

Code to Display the Tilemills mbtiles in android project

我已经成功实现了此代码,并且工作正常。但是问题是,当我构建APK时,由于我的MBTiles文件太大,它变成了一个巨大的文件。这就是为什么要花很长时间才能打开应用程序的原因。有什么方法可以从在线服务器存储(例如http://www.example.com/mymap.mbtiles)访问MBTiles文件吗?我已经尝试使用以下代码进行MapView活动,但没有任何运气

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setZoom(10);
        mapView.setCenter(new LatLng(38.8977, -77.0365));
        mapView.setTileSource(new MBTilesLayer(this, "http://www.example.com/mymap.mbtiles"));


XML文件包含

<com.mapbox.mapboxsdk.views.MapView
    android:id="@+id/mapview
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

最佳答案

在我看来,您在问题中使用的API现在已不推荐使用,而推荐使用mapbox-gl-native项目。但是,从我在此处和GitHub上的其他答案中发现的内容中,可能有一种方法可以实现您想要的工作:


使用mb-util将.mbtiles文件提取为.png磁贴文件和.json文件。
将这些文件托管在服务器上。
使用TileJsonTileLayer而不是MBTilesLayer访问在线磁贴。尝试执行此操作的方法可以在mapbox-android-sdk-legacy项目的问题#742中找到。


如果无法解决,抱歉。由于目前我没有时间自己实施它,因此这是我能想到的最好的方法。

10-08 07:02