高德地图清除上一次操作遗留的Polygon覆盖物

首先先说我目前的场景。我目前项目中:一个地图划分了很多区块,每个区块都是Polygon覆盖物,用来制作鼠标滑动高亮效果。同时点击项目其他地方某处,也会在覆盖物上显示一个小方块,这个小方块我也是使用Polygon做的。

1. 项目痛点

我目前项目中:一个地图划分了很多区块,每个区块都是Polygon覆盖物,用来制作鼠标滑动高亮效果。同时点击项目其他地方某处,也会在覆盖物上显示一个小方块,这个小方块我也是使用Polygon做的。如下图:
在这里插入图片描述
高亮区域和白色方块区域都是覆盖物。
我重新添加白色方块覆盖物的时候会出现重复添加的问题。

这个时候使用Polygon再添加的时候,会出现重复添加Polygon, 即上一次操作的Polygon也遗留在覆盖物上。
网上看了很多办法,有直接移除map.remove()的。也有移除全部地图上的覆盖物map.clearMap()的。并不能解决我的问题。因为我的基础覆盖物也就是图上高亮区域是不能移除的。

于是,困扰了我一下午。自己打印map覆盖物的实例,发现了解决方法。

2. 解决方法

先说思路:还是通过 map.remove 方法,它可以接收需要移除覆盖物的实例。可以一次性移除多条。所以我们只需要循环拿到添加后的实例,然后再map.remove就好。

废话不多说,上代码

	removePolygon() {
		// 创建Polygon实例
		let poly = new AMap.Polygon({
			// 地图
			map: map,
			path: '你的覆盖物路径',
			// 边框颜色
			strokeColor: '#fff',
			// 边框透明度
			strokeOpacity: 1,
			// 边框宽度
			strokeWeight: 2,
			// 覆盖物颜色
			fillColor: '#fff',
			// 覆盖物透明度
			fillOpacity: 1
		})
		// 首先获取当前地图中所有覆盖物的实例。
		let mapPolyArr = this.map.getAllOverlays('polygon')
		// 定义一个空数组用来存放需要删除的覆盖物实例。
		let arr = []
		// 循环拿到需要删除的覆盖物
		// 此处需要说明,为什么从22开始。
		// 因为我自己项目中前23个覆盖物为固定的,不需要删除的。故从22开始。
		// mapPolyArr.length 的值是返回目前所有覆盖物的长度,我们不需要删最后一个,因为是自己添加的。所以要需要-1。
		for (let i = 22; i < mapPolyArr.length - 1; i++) {
			// 将需要删除的项添加到空数组里
			arr.push(mapPolyArr[i])
		}
		// 移除覆盖物
		this.map.remove(arr)
		// 重新添加覆盖物
		this.map.add(poly)
	}

至此,就实现了自己想要的结果。
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
高德地图中,多边形是一种常见的覆盖物类型。您可以使用JavaScript API提供的`AMap.Polygon`类来添加、获取和删除多边形。下面是一些示例代码,演示如何使用`AMap.Polygon`类来操作多边形覆盖物。 ### 添加多边形覆盖物 要在地图上添加多边形覆盖物,您可以使用以下代码: ```javascript var map = new AMap.Map('container', { zoom: 13, center: [116.39, 39.9] }); var path = [[116.403322, 39.920255], [116.410703, 39.897555], [116.402292, 39.892353], [116.389846, 39.891365]]; var polygon = new AMap.Polygon({ map: map, path: path, strokeColor: '#FF33FF', strokeWeight: 6, fillColor: '#1791fc', fillOpacity: 0.4 }); ``` 在上面的代码中,我们创建了一个地图对象,然后定义了多边形的路径(path)和样式(strokeColor、strokeWeight、fillColor、fillOpacity),最后使用`new AMap.Polygon()`方法创建多边形覆盖物,并将其添加到地图上。 ### 获取多边形覆盖物 要获取多边形覆盖物的属性(如路径、样式等),您可以使用以下代码: ```javascript var path = polygon.getPath(); // 获取多边形的路径 var strokeColor = polygon.getOptions().strokeColor; // 获取多边形的边框颜色 var fillColor = polygon.getOptions().fillColor; // 获取多边形的填充颜色 ``` 在上面的代码中,我们使用`getPath()`方法获取多边形的路径,使用`getOptions()`方法获取多边形的选项,并从选项中获取边框颜色和填充颜色。 ### 删除多边形覆盖物 要删除多边形覆盖物,您可以使用以下代码: ```javascript polygon.setMap(null); // 将多边形从地图上删除 ``` 在上面的代码中,我们使用`setMap(null)`方法将多边形从地图上删除。 总结一下,您可以使用`AMap.Polygon`类来添加、获取和删除多边形覆盖物。您可以根据您的需求,修改多边形的属性和样式,实现更多地图功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值