【问题标题】:How to get distance to waypoint in Navigation Manager如何在导航管理器中获取到航点的距离
【发布时间】:2016-09-29 22:51:57
【问题描述】:

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

【问题讨论】:

    标签: here-api


    【解决方案1】:

    要完成@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()));
    
            }
        }
    

    【讨论】:

      【解决方案2】:

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

      // 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();
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-23
        • 1970-01-01
        • 2022-01-22
        • 2017-12-12
        相关资源
        最近更新 更多