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