You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HERE SDK导航版(4.13.2.0)中获取当前道路名称?

正确获取HERE SDK导航中当前道路名称的方法

你之前的两种方式容易返回null,原因如下:

  • 遍历Route的sections和maneuvers时,很多机动动作(比如起步、到达、匝道切换等)本身不关联具体道路名称,或者道路未命名,导致roadTexts为空。
  • 通过maneuverProgress获取机动动作的方式,仅在当前处于某个机动节点的执行阶段时才有有效数据,大部分行驶过程中是在两个机动动作之间的路段,因此无法拿到对应机动动作的道路信息。

正确的做法是直接从RouteProgress中获取当前行驶的道路元素或道路名称:

方法1:通过RouteProgress的currentRoadName直接获取

override fun onRouteProgressUpdated(routeProgress: RouteProgress) {
    // 获取当前道路名称的本地化默认值
    val currentRoadName = routeProgress.currentRoadName?.defaultValue
    currentRoadName?.let {
        // 处理获取到的道路名称
    }
}

方法2:通过当前道路元素获取更详细信息

如果需要道路的更多属性(比如道路类型、多语言名称),可以获取当前道路元素:

override fun onRouteProgressUpdated(routeProgress: RouteProgress) {
    val currentRoadElements = routeProgress.currentRoadElements
    if (currentRoadElements.isNotEmpty()) {
        val mainRoadElement = currentRoadElements.first()
        // 获取默认语言的道路名称
        val roadName = mainRoadElement.names.defaultValue
        // 可选:获取指定语言的名称(示例为中文)
        val localizedRoadName = mainRoadElement.names.getLocalizedValue(Locale.CHINESE)
    }
}

补充说明

  • currentRoadName是SDK提供的快捷方式,内部已处理道路元素的筛选逻辑,直接返回当前行驶道路的名称。
  • currentRoadElements会返回当前位置对应的所有道路元素(比如主路+辅路),通常取第一个元素即可得到主要行驶道路的信息。

内容的提问来源于stack exchange,提问作者Serggio Lysenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:02:38