github 地图上画区域的工程_mapbox 修改指定区域内建筑的样式

ca54688f8afee47d8739b103a4d4cb4f.png

接到一个需求,把地图上一个选区的建筑物高亮标识。但是用 mapbox 生成的 3D 建筑物没有唯一的 ID 标识,无法判断具体的建筑物名称。

通过科学搜索找到了如下两个demo。

单击选中建筑物

bbc41baebcc90d28a83760880a43401c.png
How to show buildings from selected area in Mapbox​stackoverflow.com
725178260d04a2762543da75b13f4024.png

ac818c70b70e26e35c632a8699c12328.png

在选中 demo 中,了解到了可以采用 新建一个图层,再动态的设置该图层的 data,来达到修改楼宇样式的方法。

// 增加一个空数据

再使用 map.queryRenderedFeatures api 来获取渲染的 Feature objects。

点开属性发现了一些经纬度信息,推测是用来保存顶点位置的。

2c16fdc0cf23492940c88fabd467ac94.png

如此一来只要把 Feature objects 的顶点经纬度和我们自己的区域经纬度做一次对比,判断所有的顶点坐标是否落在区域内即可。

最终把过滤的 Feature objects 对象赋值到新图层即可。

不过这种方法还有一个bug,生成的图形会”穿模“,颜色会混合在一起闪动, 我的解决办法是调整覆盖图层的高度。不知道有没有更好的解决办法。

bcc61cfef335cce4195e6f19598f4e42.png

demo :

Display buildings in 3D​mydaoyuan.github.io

题图的demo:

https://mydaoyuan.github.io/mapboxdemo/index.html​mydaoyuan.github.io
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值