mapbox/MineMap单一图层绘制多元素后点击变更指定点击位置元素属性

背景分析:采用Layer绘制方案中存在很多情况下需求在一张地图绘制n个属性显示的问题,例如行政区划面,边界等等。例如如下场合
在这里插入图片描述
未知多个元素汇集在同一张地图实例上去做显示,编辑等效果。
处理方案:
1.第一反应是N个layer叠加显示
优点:数据处理简单,执行编辑方案简单
缺点:需要使用存储全局变量多,绘制性能占用大,内存占用大,后续清理图层,清理数据麻烦
2.单图N元素的显示
核心利用 数据组装时 组装 features=[];
优点:需要使用存储变量少,绘制性能占用低,图层唯一,数据,图层清理简单。整体占用内存小
缺点:图层编辑麻烦,局部编辑引起整图变化
综合之下方案二仍是强于方案1的。
基于方案2下我们实现了对单一图层下N元素的属性变化,当点击红色面时变更颜色。使用场景。边界中局部区域的选中高亮,行政区划,网格点击或进入某一区域高亮显示
在这里插入图片描述
在这里插入图片描述
改变元素我们仍然利用我们最核心的思想数据驱动
有了这个理念后我们要做的就是拆解整个流程
1.点击获取图层属性

this.map.queryRenderedFeatures(e.point, {
   layers: ['ls-center']});

该方法返回的是当前点击位置所在图层对应的features 数组,含有该位置所有layer数据
2.找到点击位置在元数据中的唯一标识properties提供数据组装时加入自定义标识
3.利用绘制面试提供的识别字段,及响应stops驱动变更

      "property": "value",
      
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值