如何在导航管理器中获得航点的距离

时间:2016-09-29 22:51:57

标签: here-api

在我的Android应用程序中,我使用Here map SDK进行导航。当用户导航时,我的路线中有多个航路点。当用户在应用程序中导航时,我希望接收到下一个航路点的距离。目前您可以获取NavigationManager.getInstance()。getDestinationDistance()此函数返回到路径终点的剩余距离。如何获得每个航路点的剩余距离?

2 个答案:

答案 0 :(得分:1)

要完成@Blake已经说过的话(对其他人有用),

getNextManeuverDistance()只会给你从前一个机动的下一个机动的距离。

如果你想要距离你的位置的实际距离,你需要根据下一个机动的geoPosition和你的实际地理位置计算它:

maneuver.getCoordinate().distanceTo(geoPosition.getCoordinate()) 

所以你的代码就像这样:

 @Override
 public void onPositionUpdated(GeoPosition geoPosition) {
        Maneuver maneuver = NavigationManager.getInstance().getNextManeuver();
        if (maneuver != null) {
            Log.i(TAG, "OnPositionUpdatedEvent : " + maneuver.getAction().name()
                    + " turn : " + maneuver.getTurn()
                    + " in " +  maneuver.getCoordinate().distanceTo(geoPosition.getCoordinate()));

        }
    }

答案 1 :(得分:0)

当用户位置发生变化时,您可以确定到下一个航路点的距离(路线中的下一次机动)。

// listen for positioning events
private PositioningManager.OnPositionChangedListener mapPositionHandler = new PositioningManager.OnPositionChangedListener()
{
    @Override
    public void onPositionUpdated(PositioningManager.LocationMethod method, GeoPosition position, boolean isMapMatched) {
    ...
    ...
    //Code you want
    long meters = NavigationManager.getInstance().getNextManeuverDistance();
    }