微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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
   }

}

原文地址:https://www.jb51.cc/js/151182.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐