Поэтому я пытаюсь использовать 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);
}
});
}
Есть идеи, в чем может быть проблема?