как я могу добавить один набор плиток в NavigationView?
Моей первой попыткой было создание целого стиля в Mapbox Studio и привязка к нему набора плиток. Затем я добавил стиль в NavigationView внутри фрагмента
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
[...]
// Mapbox
navigationView = view.findViewById(R.id.mapboxNavigationView);
navigationView.onCreate(null);
[...]
navigationView.initialize(this, initialPosition);
return view;
}
@SuppressLint("MissingPermission")
@Override
public void onNavigationReady(boolean isRunning) {
mapboxMap = navigationView.retrieveNavigationMapboxMap().retrieveMap();
mapboxMap.setStyle("mySecretStyle", new Style.OnStyleLoaded() {
@Override
public void onStyleLoaded(@NonNull Style style) {
// Never called ...
}
});
}
Стиль успешно добавлен, как вы можете видеть здесь.
Но возникает следующая ошибка, и навигация не запускается
java .lang.NullPointerException: попытка вызвать виртуальный метод 'java .util.List com.mapbox.mapboxsdk.maps. Style.getSources () 'для ссылки на пустой объект в com.mapbox.services. android .navigation.ui.v5.map.NavigationMapboxMap.initializeWayName (NavigationMapboxMap. java: 668) в com.mapbox.services. android .navigation.ui.v5.map.NavigationMapboxMap.addProgressChangeListener (NavigationMapboxMap. java: 277) в com.mapbox.services. android .navigation.ui.v5.NavigationView.initializeNavigationListeners (NavigationView. java: 691) на com.mapbox.services. android .navigation.ui.v5.NavigationView.initializeNavigation (NavigationView. java: 632) на com.mapbox.services. android .navigation.ui.v5.NavigationView. (. NavigationView java: 394) startNavigation * 10 16 *
Мой второй подход состоял в том, чтобы добавить только набор плиток, загруженный в Mapbox Studio:
@Override
public void onNavigationReady(boolean isRunning) {
mapboxMap = navigationView.retrieveNavigationMapboxMap().retrieveMap();
mapboxMap.getStyle(new Style.OnStyleLoaded() {
@Override
public void onStyleLoaded(@NonNull Style style) {
String sourceId = "indoor-source";
style.addSource(new RasterSource(sourceId, "mytileid"));
String layerId = "indoor-layer";
RasterLayer rasterLayer = new RasterLayer(layerId, sourceId);
style.addLayer(rasterLayer);
}
});
}
Но это тоже не работает - но, по крайней мере, навигация работает по умолчанию стиль навигации.
Моя третья попытка (с допустимым стилем)
@Override
public void onNavigationRunning() {
navigationView.retrieveNavigationMapboxMap().retrieveMap().setStyle("mySecretStyle");
}
... приводит к SIGSEGV
------- - начало cra sh 2020-02-28 15: 49: 32.835 A / lib c: фатальный сигнал 11 (SIGSEGV), код 1 (SEGV_MAPERR), адрес ошибки 0x681713e80325b4 в tid 29828 (oid.med .. ..), pid 29828 (oid.med ....)
Есть идеи?