【发布时间】:2016-09-29 22:51:57
【问题描述】:
在我的 android 应用程序中,我使用 Here 地图 SDK 进行导航。当用户导航时,我的路线中有多个航点。我想在用户在应用程序中导航时接收到下一个航点的距离。目前可以获取 NavigationManager.getInstance().getDestinationDistance() 这个函数返回到路线终点的剩余距离。如何获得每个航点的剩余距离?
【问题讨论】:
标签: here-api
在我的 android 应用程序中,我使用 Here 地图 SDK 进行导航。当用户导航时,我的路线中有多个航点。我想在用户在应用程序中导航时接收到下一个航点的距离。目前可以获取 NavigationManager.getInstance().getDestinationDistance() 这个函数返回到路线终点的剩余距离。如何获得每个航点的剩余距离?
【问题讨论】:
标签: here-api
要完成@Blake 已经说过的内容(可能对其他人有用),
getNextManeuverDistance() 只会给你从上一个 Maneuver 到下一个 Maneuver 的距离。
如果您想要与您的位置的实际距离,在您的位置监听器中,您需要根据下一次机动的 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()));
}
}
【讨论】:
随着用户位置的变化,您可以确定到下一个航路点的距离(路线中的下一个机动)。
// 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();
}
【讨论】: