2

Mapbox Android SDK を使用して Android アプリの構築を開始しました。Tilemill で作成したカスタム mbtiles ファイルを使用したいと考えています。私はこの指示に従っていました

Android プロジェクトで Tilemills mbtiles を表示するコード

私はこのコードを正常に実装し、正常に動作しています。しかし、問題は、MBTiles ファイルが大きすぎるため、APK をビルドしているときに巨大なファイルになることです。これが、アプリを開くのに時間がかかる理由です。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" />
4

2 に答える 2

3

あなたの質問で使用した API は、mapbox-gl-native プロジェクトを優先して廃止されたようです。ただし、ここの他の回答と GitHub で見つけたものから、やりたいことを達成する方法があるかもしれません:

  1. mb-utilを使用して、.mbtiles ファイルを .png タイル ファイルと .json ファイルに抽出します。
  2. これらのファイルをサーバーでホストします。
  3. MBTilesLayer の代わりに TileJsonTileLayer を使用して、オンライン タイルにアクセスします。これを行う試みは、mapbox-android-sdk-legacy プロジェクトの問題番号742にあります。

うまくいかない場合は、申し訳ありません。自分で実装する時間がないので、これが現時点で思いつく最善のものです。

于 2015-10-25T11:44:39.650 に答える
0

Mapbox または Maplibre で独自のベクター MBTiles ファイルを表示するには、基本的に、スタイル JSON でベクター データのソースとして MBTiles ファイルを指定する必要があります。

スタイル JSONのタグで、別の JSON を指している可能性sourcesのある値をこの形式に置き換える必要があります。url

mbtiles://<file-uri>

このように見えるかもしれません

mbtiles://file:///data/user/0/com.example.maplibretest/cache/india_coimbatore.mbtiles

これにより、このリンクされた MBTiles ファイルをオンライン ソースではなくベクター データのソースとして使用するよう SDK に指示されます。このカスタム JSON をスタイルとして設定するには、JSON をアプリにパッケージ化し、編集可能な場所にコピーして、MBTiles ファイルの Uri を URL に追加し、その JSON ファイル スタイルをMapbox または Maplibre SDK。また、オンライン ソースからスタイル JSON を取得して編集し、SDK に提供することもできます。

このプロセス全体については、このブログ投稿に詳しく書いています - https://medium.com/@ty2/how-to-display-offline-maps-using-maplibre-mapbox-39ad0f3c7543

于 2021-08-19T20:11:57.670 に答える