2017-08-10 38 views
0

所以,我使用的是版本Mapbox导航0.3.1,我从私有OSRM服务器获取路由。 Snap-to-route和其他功能正常工作正常,但是当第一步完成导航时不会继续下一步并调用offRoute方法。我在这里呆了1-2个月。我将不胜感激任何帮助。Mapbox导航`当第一步`完成时调用offRoute()`

下面是我的Mapbox导航实现的代码片段。

public class MapActivity implements MapboxMap.OnMarkerClickListener 
     ,OnMapReadyCallback, AlertLevelChangeListener, ProgressChangeListener, OffRouteListener 
     ,NavigationEventListener, LocationEngineListener{ 


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


     fabStartNavigation.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // star Navigation 
       startNavigation(); 
      } 
     }); 
    } 


    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 

     // Remove all navigation listeners being used 
     mNavigation.removeNavigationEventListener(this); 
     mNavigation.removeAlertLevelChangeListener(this); 
     mNavigation.removeProgressChangeListener(this); 
     mNavigation.removeOffRouteListener(this); 

     // End the navigation session 
     mNavigation.endNavigation(); 
     mapView.onDestroy(); 
    } 


    //navigation controller 
    private void startNavigation(){ 
     mNavigation.addNavigationEventListener(this); 
     mNavigation.addAlertLevelChangeListener(this); 
     mNavigation.addOffRouteListener(this); 
     mNavigation.addProgressChangeListener(this); 
     mNavigation.setSnapToRoute(true); 

     /*LocationEngine mLocationEngine = LostLocationEngine.getLocationEngine(this); 
//  mNavigation.setLocationEngine(mLocationEngine);*/ 
     mLocationEngine = LostLocationEngine.getLocationEngine(this); 

     mLocationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY); 
     mLocationEngine.addLocationEngineListener(this); 
     mLocationEngine.activate(); 

     mNavigation.startNavigation(mPlannedRoute); 
    } 

    // navigation listeners 
    @Override 
    public void onAlertLevelChange(int alertLevel, RouteProgress routeProgress) { 
     switch (alertLevel) { 
      case HIGH_ALERT_LEVEL: 
       break; 
      case MEDIUM_ALERT_LEVEL: 
       break; 
      case LOW_ALERT_LEVEL: 
       break; 
      case ARRIVE_ALERT_LEVEL: 
       break; 
      case NONE_ALERT_LEVEL: 
       break; 
      case DEPART_ALERT_LEVEL: 
       break; 
     } 
    } 

    @Override 
    public void onProgressChange(Location location, RouteProgress routeProgress) { 
    } 

    @Override 
    public void userOffRoute(Location location) { 
    } 

    @Override 
    public void onRunning(boolean running) { 
    } 

    @Override 
    public void onConnected() { 
     mNavigation.setLocationEngine(mLocationEngine); 
     mLocationEngine.requestLocationUpdates(); 
    } 

    @Override 
    public void onLocationChanged(Location location) { 

    } 
} 

回答

1

这听起来像是你运行到已经被修复一个很老的bug。我的建议是升级到0.4.0或0.5.0快照。

+1

是的,它完成了这项工作,感谢您的团队提供的优秀SDK – FARID

相关问题