如何为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
相关产品推荐
相关产品推荐

