【问题标题】:On a Mapbox map, how to keep a layer always visible, no matter the zoom level?在 Mapbox 地图上,无论缩放级别如何,如何保持图层始终可见?
【发布时间】:2022-12-10 01:11:36
【问题描述】:
我试图了解图块级别的数据显示处理的基本机制,但我没有找到任何足够明确的文献让我理解它是如何工作的。
不过我有一个简单的需求:让一层符号始终可见。
我已经测试了很长时间的这些属性:
'icon-allow-overlap': true,
icon-ignore-placement': true,
文本允许重叠':是的,
文本忽略放置':true
我还尝试使用图层和源顺序、缩放级别的可见性……但我的印象是内部工作超载了所有这些并接管了我的陈述。
我想这与图块加载的数据有关......但我无法进一步理解“问题”。
我对任何可以帮助我理解 Mapbox 在这方面的工作原理的解释或链接(或示例!)感兴趣。
【问题讨论】:
标签:
javascript
dictionary
documentation
mapbox-gl-js
layer
【解决方案1】:
如果您的数据位于矢量切片源中,切片中的数据可用性会限制您控制符号可见的缩放级别的能力。主要原因是当您在缩放范围之外缩放时,矢量切片图层中的数据可用,但数据变得不可用。如果您控制矢量切片源,则可以使数据在矢量切片的所有缩放级别中可用,但请注意,如果在完全缩小时有大量点,这可能会产生问题。
如果数据是通过 GeoJSON 源加载的,那么您可以使用您提到的四个图标/文本选项使符号始终出现在所有缩放级别上。
如果您正在使用矢量切片并且无法控制切片,您可能会进行黑客攻击,从矢量切片中捕获数据并将数据存储在 geojson 源中。您将使用隐藏层加载矢量切片(使事物透明或不可见,以便仍然请求切片),然后随着地图移动,从该源检索可视地图区域中的所有几何图形。理想情况下,您将拥有一个可用于跟踪几何图形的唯一标识符,这样您就不会多次存储/捕获相同的几何图形。请注意,如果几何图形是在缩小时从矢量图块中捕获的,则位置的准确性可能会很低,因为坐标会在该缩放级别捕捉到像素,因此您可能会跟踪几何图形的缩放级别捕获在,如果您稍后在放大更多时再次遇到相同的几何体,您可以相应地替换几何体坐标以提高其精度。这将需要相当数量的代码才能正常工作,但如果您没有其他选择,这应该是可行的。