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

如何为HERE map API移除已绘制路线,实现单次仅展示一条路线

解决方案

你可以在外层作用域声明一个变量存储当前已绘制的路线实例,每次绘制新路线前先批量移除之前的实例即可,修改后的代码如下:

// 存储当前地图上已绘制的路线折线实例
let currentRoutePolylines = []

function addRouteShapeToMap(route) {
  // 入参合法性校验,避免空值报错
  if (!route?.sections?.length) return

  // 清除之前绘制的所有路线
  currentRoutePolylines.forEach(polyline => {
    map.removeObject(polyline)
  })
  // 清空存储数组
  currentRoutePolylines = []

  // 绘制新路线
  route.sections.forEach((section) => {
    let linestring = H.geo.LineString.fromFlexiblePolyline(section.polyline);
    let polyline = new H.map.Polyline(linestring, {
      style: {
        lineWidth: 8,
        strokeColor: "rgba(207, 0, 15, 1)",
      },
    });
    map.addObject(polyline);
    // 把新绘制的折线存入数组方便后续清除
    currentRoutePolylines.push(polyline)
  });
}

可选优化

如果不想污染全局作用域,你可以把currentRoutePolylines变量封装到闭包或者地图工具类的实例属性中,逻辑完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:24:02