0

我已经实现了 Mapbox Navigation 并且最近让它工作了,现在我想从 to 更新导航0.3.10.4.0-SNAPSHOT不幸的是,onProgressChange()即使我没有对代码进行任何更改,更新后也没有被触发。

注意:onLocationChanged在这两种情况下都有效。

编辑

注意:尽管速度为,但0.3.1仍会触发onProgressChange()0.00.4.0-SNAPSHOT

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) {

    }
}
4

1 回答 1

1

您收到的位置更新是否可能没有速度值?如果速度值为 0 或更小,onProgressChange则不会被调用。如果这不是问题,任何其他信息和代码片段都将有助于解决此问题。

于 2017-07-16T22:13:53.897 回答