MapLibre减少XYZ矢量瓦片请求。

3

我对maplibre/mapbox比较新。我在我的PostGIS数据库中有大约40,000个多边形。这是太多数据,无法一次性加载到地图库地图中作为geojson源。因此,我实现了一个简单的REST服务器,将多边形编译成X/Y/Z MVT矢量瓦片返回,以便我可以将其用作我的地图库样式文件中的“向量”源。这很好用,多边形开始出现在缩放级别10。

问题是...出于性能和服务器负载的考虑,我想减少瓦片请求的数量。 目前,在我将缩放级别从10更改为11时,maplibre会请求新的瓦片,但实际上这并不必要,因为所有需要的数据都已包含在它为缩放级别10获取到的瓦片中。是否有办法告诉maplibre请求不是当前缩放级别的瓦片,而是更高的缩放级别呢?例如,请求1/1/10而不是1/1/12。

换句话说,我想告诉maplibre始终使用z10瓦片中的数据,即使是更高的缩放级别。如果尚未加载z10瓦片,则加载z10瓦片。
谢谢

1个回答

2

我可能误解了您的问题,但是可以通过在源上设置maxzoom来告诉客户端库永远不要请求高于缩放级别10的瓦片,并始终进行超级缩放。

map.addSource('polys', { type: 'vector', /*...*/, maxzoom: 10 });

谢谢你指引我正确的方向,Steve。我还不得不在源代码中添加minzoom: 10,因为Maplibre在启动时仍然会请求一些Z11和Z12瓦片。 - Humppakäräjät
我还不得不在我的MVT REST服务中添加了cache-control max-age=3600头部,以便让Web浏览器开始缓存瓦片。我认为Maplibre没有内置逻辑来防止反复请求相同的瓦片。您能否在您的答案中添加minzoom和有关缓存的简短说明?然后我会将其标记为已接受的答案。谢谢! - Humppakäräjät
我不明白为什么需要minzoom。而且我认为缓存参数与核心问题无关。 - Steve Bennett
仅在源定义中存在 maxzoom:10 的情况下,Maplibre 偶尔仍会请求其他缩放级别的瓦片,而不是 10。在另外添加 minzoom:10 到源定义后,Maplibre 停止这样做,并根据需要仅请求 z10 瓦片。你说得对,缓存控制相关的东西对我的用例很重要,但不是针对这个问题。再次感谢。 - Humppakäräjät

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接