Mapbox.js - 在请求的缩放级别中缺少时,从较低缩放级别回退平铺图像

use*_*462 5 leaflet mapbox

我从磁盘提供地图png文件,我有缩放级别15的整个城市的瓷砖png.我还有缩放级别16-18的瓷砖,但仅限于某些区域.

我想设置切片图层,这样当用户处于缩放级别18时,地图将显示来自级别15的缩放图块作为后备.

我尝试设置选项maxNativeZoom,但对我不起作用.

这是我的代码:

offlineLayer = L.mapbox.tileLayer(tileJSON, {
    minZoom: 8,
    maxZoom: 18,
    maxNativeZoom: 15
});
map.addLayer(offlineLayer, 'Offline', 1);
Run Code Online (Sandbox Code Playgroud)

我可以使用某些选项,或者我需要以某种方式破解它吗?或者是否有一些示例代码?

InP*_*uit 0

当你说它对你不起作用时,我猜你在上面的代码中看到的是到处都是级别 15 的图块,即使在缩放级别为 16-18 且在这些级别有图块的区域也是如此?这是 maxNativeZoom 的预期行为。TileLayer 为给定的缩放级别和地图边界创建所有图块,并将“src”设置为包含当前缩放级别的 URL。如果当前缩放级别大于“maxNativeZoom”,则 URL 中的缩放级别将设置为“maxNativeZoom”。例如,如果“maxNativeZoom”设置为 15,则 src="http://a.tile.openstreetmap.org/15/16368/10896.png" 将用于缩放级别 16-18。

代码中没有逻辑检查该缩放级别的图块是否确实存在图像。

如果您的图块位于单个数据集中,那么您可以修改 TileLayer 中的代码来检查生成的 URL 的 HTTP 404 返回代码,如果收到返回代码,则使用“maxNativeZoom”创建一个新 URL。如果您的图块位于多个数据集中(即一个用于缩放级别 15 及以下,另一个用于缩放级别 16-18),那么我认为您必须编写一个支持多个数据集的 TileLayer。