javascript – Google Maps Polyline – 如何删除?

所以我检查了以前的问题,这些都与V2有关,这是没有帮助的.

所以,我创建两个标记,将它们保存在数组中作为标记[“to”]和标记[“from”]

然后再添加它们

function route(){
        for(var key in markers) {
           flightPlanCoordinates.push(markers[key].position);
       }
        flightPath = new google.maps.polyline({
            path: flightPlanCoordinates,strokeColor: "#FF0000",strokeOpacity: 1.0,strokeWeight: 2
    });
   flightPath.setMap(map);
}

辉煌.
但.下次我使用它(使用数组中的新标记),它只是添加一个折线,而不删除之前的一个.
我似乎尝试了所有的东西,从第一个阵列,flightPath,setMap(null)等删除.

在绘制新行前,删除上一行的正确方法是什么?

编辑:解决

function route(){
    var flightPlanCoordinates = [];
    for(var key in markers) {
        flightPlanCoordinates.push(markers[key].position);
    }
    if(flightPath) {
        flightPath.setPath(flightPlanCoordinates);
    } else {
        flightPath = new google.maps.polyline({
            path: flightPlanCoordinates,strokeWeight: 2
        });
        flightPath.setMap(map);
    }
}

原因:
flightPlanCoordinates需要在范围内进行初始化,这将在每次使用时重置数组,将其正确清理. (还要感谢下面的输入,使代码更好一点.

解决方法

在flightPath = new …之前,我看不到var,所以我认为flightPath是一个全局变量.
function route(){
   //flightPath.setMap(null); Doesnt't work!?
   for(var key in markers) {
       flightPlanCoordinates.push(markers[key].position);
   }
   if(flightPath) {//If flightPath is already defined (already a polyline)
       flightPath.setPath(flightPlanCoordinates);
   } else {
       flightPath = new google.maps.polyline({
           path: flightPlanCoordinates,strokeWeight: 2
      });
      flightPath.setMap(map);//It's not necessary to setMap every time
   }

}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...