使用 MapboxNavigation 对象启动 Mapbox Navigation UI
Start Mapbox Navigation UI using MapboxNavigation object
我使用这行代码成功启动了 Mapbox 导航 UI:
NavigationLauncher.startNavigation(MainActivity.this, options);
但我想使用 MapboxNavigation
对象启动导航会话,以便我可以实现侦听器 EG:OffRouteListener
.
为此,我使用了以下代码,但未显示导航 UI。
我什至不确定 MapboxNavigation#startNavigation
是否应该启动任何可视组件。
MapboxNavigation mapboxNavigation = new MapboxNavigation(MainActivity.this, accessToken, mapboxNavigationOptions);
mapboxNavigation.addOffRouteListener(location -> {
// do things
});
mapboxNavigation.startNavigation(directionsRoute);
This example in the Mapbox Android documentation shows how to start a visual navigation component using MapboxNavigation#startNavigation
, in conjunction with an OffRouteListener
. The relevant section of the source code (also linked here) 是:
@OnClick(R.id.startRouteButton)
public void onStartRouteClick() {
boolean isValidNavigation = navigation != null;
boolean isValidRoute = route != null && route.distance() > TWENTY_FIVE_METERS;
if (isValidNavigation && isValidRoute) {
// Hide the start button
startRouteButton.setVisibility(View.INVISIBLE);
// Attach all of our navigation listeners.
navigation.addNavigationEventListener(this);
navigation.addProgressChangeListener(this);
navigation.addMilestoneEventListener(this);
navigation.addOffRouteListener(this);
((ReplayRouteLocationEngine) locationEngine).assign(route);
navigation.setLocationEngine(locationEngine);
mapboxMap.getLocationComponent().setLocationComponentEnabled(true);
navigation.startNavigation(route);
mapboxMap.removeOnMapClickListener(this);
}
}
navigation
变量被初始化 here 作为 MapboxNavigation
的实例。
因此,添加行
((ReplayRouteLocationEngine) locationEngine).assign(route);
mapboxNavigation.setLocationEngine(locationEngine);
mapboxMap.getLocationComponent().setLocationComponentEnabled(true);
在您的实施中调用 mapboxNavigation.startNavigation(directionsRoute);
之前应该可以解决问题。您还应确保 directionsRoute
对象是 DirectionsRoute
class.
的正确表述实例
我使用这行代码成功启动了 Mapbox 导航 UI:
NavigationLauncher.startNavigation(MainActivity.this, options);
但我想使用 MapboxNavigation
对象启动导航会话,以便我可以实现侦听器 EG:OffRouteListener
.
为此,我使用了以下代码,但未显示导航 UI。
我什至不确定 MapboxNavigation#startNavigation
是否应该启动任何可视组件。
MapboxNavigation mapboxNavigation = new MapboxNavigation(MainActivity.this, accessToken, mapboxNavigationOptions);
mapboxNavigation.addOffRouteListener(location -> {
// do things
});
mapboxNavigation.startNavigation(directionsRoute);
This example in the Mapbox Android documentation shows how to start a visual navigation component using MapboxNavigation#startNavigation
, in conjunction with an OffRouteListener
. The relevant section of the source code (also linked here) 是:
@OnClick(R.id.startRouteButton)
public void onStartRouteClick() {
boolean isValidNavigation = navigation != null;
boolean isValidRoute = route != null && route.distance() > TWENTY_FIVE_METERS;
if (isValidNavigation && isValidRoute) {
// Hide the start button
startRouteButton.setVisibility(View.INVISIBLE);
// Attach all of our navigation listeners.
navigation.addNavigationEventListener(this);
navigation.addProgressChangeListener(this);
navigation.addMilestoneEventListener(this);
navigation.addOffRouteListener(this);
((ReplayRouteLocationEngine) locationEngine).assign(route);
navigation.setLocationEngine(locationEngine);
mapboxMap.getLocationComponent().setLocationComponentEnabled(true);
navigation.startNavigation(route);
mapboxMap.removeOnMapClickListener(this);
}
}
navigation
变量被初始化 here 作为 MapboxNavigation
的实例。
因此,添加行
((ReplayRouteLocationEngine) locationEngine).assign(route);
mapboxNavigation.setLocationEngine(locationEngine);
mapboxMap.getLocationComponent().setLocationComponentEnabled(true);
在您的实施中调用 mapboxNavigation.startNavigation(directionsRoute);
之前应该可以解决问题。您还应确保 directionsRoute
对象是 DirectionsRoute
class.