我正在尝试创造一种体验,我在地图上有几个详细的建筑物3D模型,通过矢量瓦片源突出邻近建筑物的建筑物轮廓。3D模型将是主要焦点,挤出的轮廓线将作为参考。我遇到的一个挑战是,我有一个全局建筑轮廓层,它有一个3D建筑的轮廓线,这并不完全匹配。此外,当挤出时,它最终会合并/重叠漂亮的3D模型。
我希望能够隐藏与3D模型重叠的各个轮廓线。我最初的想法是获取3D模型的边界框,然后使用新的within样式表达式,但看起来这只会过滤点和线,而不是多边形。建筑物轮廓多边形中没有我可以用来过滤的唯一信息。
我知道我可以监控地图移动,查询渲染的特征,并手动检测相交的多边形,但由于轮廓线上没有唯一的属性,我不能过滤或使用特征状态。
对于如何有效地避免在特定区域中渲染来自矢量平铺源的单个多边形有什么想法吗?
发布于 2021-03-13 08:20:10
这是一个常见的问题,Mapbox街道中的buildings层不包含任何独特的属性,以允许以不同的方式进行过滤或渲染。
最好的解决方案通常是寻找一个不同的建筑物图层,在这种情况下,在预处理过程中删除那些多余的建筑物。
我可以想到一个相当疯狂的变通方法,它可能在这里工作,尽管性能可能很差。
fill, essentially invisible. (Maybe invisible would work.) Call your main source geojson的次要建筑源以及一个次要fill-extrusion层。将此源buildings-copy.move或moveend,使用querySourceFeatures获取所有buildings-copy.的副本此副本使用Turf移除不需要的建筑物,并调用setData将副本设置为Turf的数据
您可能需要做一些巧妙的缓存来获得合理的性能。
https://stackoverflow.com/questions/66606744
复制相似问题