MapBox实现要素点击高亮的几种思路(点击颜色变化)

本文介绍了两种在MapBox中实现图层点击高亮的方法。第一种是通过监听'click'事件,获取点击的要素并创建新图层显示;第二种是利用filter动态改变图层展示,创建专门的高亮图层。两种方法在数据量不大时性能相近,第一种更易于理解和实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求和问题是这样的:现在假设你有一个图层A,想要实现点击A图层中的某一个要素高亮的需求,首先我们将A图层添加到地图上:

第一种思路最简单也最好理解,首先我们可以通过map.on('click',e=>{})的回调,获取当前鼠标点击事所选中的要素,然后将这个要素作为数据源source,重新构建一个图层添加到地图上。

代码如下:

	map.on('click', function (e) {
     // 获取点击到的要素
		const features = map.queryRenderedFeatures(e.point);
    
		map.addLayer({
		  "id": "test-filter",
		  "type": "fill",
		  "source": {
			  "type": "geojson",
              //这里只有一个图层就是features[0],如果有多个图层需要自己写条件过滤
			  "data": features[0]
		   },
		  "click": true,
		  "paint": {
			 "fill-color": "#47C1D0",
			 "fill-opacity": 1
		  },
			
		});
	});

解释一下上面的代码,首先通过map.on绑定click事件,得到了回调参数e,e里面包含很多东西,mapbox官方为我们提供了一个API:queryRenderedFeatures来获取当前点击得到的features,只需要传入参数e的坐标就可以,我们获取到的features可能是多个的,因为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WebGIS小智

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值