Автономная загрузка с помощью Mapbox - PullRequest
1 голос
/ 12 марта 2019

Поэтому я пытаюсь использовать Mapbox SDK в автономном режиме, объединяя плитки в локальном файле БД, который я создал на своем собственном сервере плиток, с помощью команды

./mbgl-offline --north [north coordinate] --west [west coordinate] --south [south coordinate] --east [east coordinate] --minZoom [minimum zoom] --maxZoom [maximum zoom] --output [output file path] --style [style URL] --token [mapbox token]

из mapbox-gl-собственная библиотека.

Я поместил файл в каталог / path / to / file / files и реализовал код слияния, как показано в примере: пример объединения автономных плиток

Когда я открываю приложение, я получаю тост, который говорит, что слияние прошло успешно, но я не вижу карту.все, что я вижу, - это пустая поверхность с цветом фона моего стиля карты.

Как показано в примере, я проверяю, что приложение не подключено к Интернету, а затем объединяю файл БД перед загрузкойстиль:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

// Mapbox access token is configured here. This needs to be called      either in your application
// object or in the same activity which contains the map view.
    Mapbox.getInstance(this, getString(R.string.access_token));

// This contains the MapView in XML and needs to be called after the access token is configured.
    setContentView(R.layout.activity_main);

    mapView = findViewById(R.id.mapView);
    mapView.onCreate(savedInstanceState);

    Mapbox.setConnected(false);
    mergeDb();
    mapView.getMapAsync(this);
}

@Override
public void onMapReady(@NonNull final MapboxMap mapboxMap) {
    MainActivity.this.mapboxMap = mapboxMap;

    mapboxMap.setStyle( new Style.Builder().fromUrl("http://<my_server_ip>/styles/klokantech-basic/style.json")
      , new Style.OnStyleLoaded() {
          @Override
          public void onStyleLoaded(@NonNull Style style) {

//                  enableLocationComponent(style);

          }
      });
}

Моя функция mergeDb:

    private void mergeDb(){
    System.out.println(FileSource.getResourcesCachePath(this));
    OfflineManager.getInstance(this).mergeOfflineRegions(FileSource.getResourcesCachePath(this) + "/myfile.db", new OfflineManager.MergeOfflineRegionsCallback() {
        @Override
        public void onMerge(OfflineRegion[] offlineRegions) {
            mapView.getMapAsync(new OnMapReadyCallback() {
                @Override
                public void onMapReady(@NonNull MapboxMap mapboxMap) {
                    mapboxMap.setStyle(new Style.Builder().fromUrl("http://<my_server_ip>/styles/klokantech-basic/style.json"));

                }
            });

            Toast.makeText(
              MainActivity.this,
              String.format("Merged %d regions.", offlineRegions.length),
              Toast.LENGTH_LONG).show();
        }

        @Override
        public void onError(String error) {

            Toast.makeText(
              MainActivity.this,
            String.format("Offline DB merge error." ),
              Toast.LENGTH_LONG).show();
            System.out.println(error);

        }
    });
}

Есть идеи, в чем может быть проблема?

...