重新路由中没有永久ID(HERE Android Premium SDK)

时间:2019-05-13 13:00:56

标签: here-api

我使用Here Android Premium SDK通过CoreRouter :: calculateRoute()从在线后端获取路由。为了使用其他数据增强路线,我使用路线链接的永久ID来查询HERE的平台数据扩展(PDE)。由于更新后的路由不包含永久ID,因此在需要重新路由时会中断。

原始路由包含每个链接的定向永久ID,我可以这样访问:

fun handleRoute(route: Route) {
  for (item in route.routeElements.elements) {
    val pid = item.roadElement.permanentDirectedLinkId
  }
}

永久ID的类型为Long,根据行进方向可以为正/负,例如-1199076058。

当驾驶员偏离计算出的路线(例如未遵循建议的操作)时,会自动计算一条新路线并通过

接收
NavigationManagerEventListener::onRouteUpdated(Route)

对于此更新的路由,所有永久性ID均为0。取而代之的是,使用RerouteListener::onRerouteEnd(RouteResut)时会发生相同的情况,并且当我请求roadElement.permanentLinkId时(没有Directed时也不会更改)。只有本地ID可用(roadElement.identifier)。

目前,我正在使用一种解决方法,其中重新路由事件会触发新的路由请求。这种方法可行,但不是一个干净的解决方案。

我希望重新路由时与路由时填充的字段相同。如何获得重新路由结果的永久ID?

1 个答案:

答案 0 :(得分:0)

我们的文档中明确指出:

getPermanentDirectedLinkId()永久链接ID(在 带有行驶方向的RoadElement的不同地图版本): 正号(+)表示朝着“规范”方向行驶 道路和负号(-)表示违反“规范” 方向。

getPermanentLinkId()返回永久 RoadElement的链接ID(跨不同地图版本稳定)。

https://developer.here.com/documentation/android-premium/api_reference_java/index.html

因此,用于路由更新的链接ID不应为null或为0,如在新路由中一样。 您也可以升级到新的SDK版本。