具有在线自定义MBTiles的Mapbox Android SDK

时间:2015-10-19 21:55:58

标签: android mapbox mbtiles

我已经开始使用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" />

1 个答案:

答案 0 :(得分:2)

在我看来,您在问题中使用的API现已弃用,以支持mapbox-gl-native项目。但是,从我在这里和GitHub上的其他答案中找到的内容,可能有一种方法可以实现您想要做的事情:

  1. 使用mb-util将.mbtiles文件解压缩到.png磁贴文件和.json文件中。
  2. 在服务器上托管这些文件。
  3. 使用TileJsonTileLayer而不是MBTilesLayer来访问在线图块。尝试执行此操作可以在mapbox-android-sdk-legacy项目的问题#742找到。
  4. 如果它不起作用,我很抱歉。这是我现在能想到的最好的,因为我没有时间自己实施它。