You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Google Maps中删除多边形?切换下拉区域时移除上一个多边形

在Google Maps中删除多边形及切换区域时清除旧多边形的解决方案

你好呀!针对你在Google Maps里操作多边形的两个问题,我来给你详细说说解决方案,结合你现有的drawPolygon函数来调整会更清晰~

一、如何删除单个多边形?

Google Maps的Polygon对象自带的setMap()方法就是关键!当你把方法的参数设为null时,就能把对应的多边形从地图上移除。比如你代码里创建的bermudaTriangle,只需要执行:

bermudaTriangle.setMap(null);

这样它就会立刻从地图上消失。这里要注意,这个操作只是把多边形从地图视图中移除,对象本身还保存在内存里,如果之后还需要重新显示它,再调用setMap(map)就能恢复啦。

二、切换下拉菜单选择新区域时,移除最后显示的多边形

你现在的drawPolygon函数每次调用都会创建新的多边形,但没有保留之前多边形的引用,所以没法直接清除旧的。我们只需要做两个小修改就能解决这个问题:

步骤1:保存当前显示的多边形引用

在你的代码里(比如全局作用域或者和drawPolygon同作用域的位置)定义一个数组,用来存储当前显示的所有多边形实例:

// 用来保存当前地图上显示的多边形集合
let currentPolygons = [];

步骤2:修改drawPolygon函数,先清旧再绘新

更新你的函数,在绘制新多边形之前,先遍历currentPolygons数组,把所有旧多边形从地图上移除,然后再绘制新的并保存引用:

function drawPolygon(polygons) { 
  // 先清除之前显示的所有旧多边形
  currentPolygons.forEach(polygon => {
    polygon.setMap(null);
  });
  // 清空存储数组,准备保存新的多边形
  currentPolygons = [];

  // 绘制新的多边形并保存引用
  polygons.forEach(function(p) { 
    const newPolygon = new google.maps.Polygon({ 
      paths: p, 
      strokeColor: '#FF0000', 
      strokeOpacity: 0.8, 
      strokeWeight: 2, 
      fillColor: '#FF0000', 
      fillOpacity: 0.35 
    }); 
    newPolygon.setMap(map);
    // 将新多边形添加到存储数组中
    currentPolygons.push(newPolygon);
  }) 
}

这样每次你从下拉菜单选择新区域调用drawPolygon时,都会先把之前显示的所有多边形清理掉,再绘制新的区域多边形,就不会出现多个多边形重叠的情况啦。

另外补充个小细节:如果之后你需要彻底释放旧多边形占用的内存,在调用setMap(null)后,清空currentPolygons数组就可以了,JavaScript的垃圾回收机制会自动处理这些不再被引用的对象。

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

火山引擎 最新活动