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

Leaflet Mapbox.js-在请求的缩放级别中丢失时,从较低缩放级别回退平铺图像,leaflet,mapbox,Leaflet,Mapbox,我从磁盘上提供地图png文件,在缩放级别15中,我有整个城市的平铺png。我也有16-18缩放级别的瓷砖,但仅适用于某些区域 我想设置平铺层,这样当用户处于缩放级别18时,地图将显示级别15的缩放平铺作为回退 我尝试设置选项maxNativeZoom,但对我无效 这是我的密码: offlineLayer = L.mapbox.tileLayer(tileJSON, { minZoom: 8, maxZoom: 18, maxNativeZoom: 15 }); map.a

我从磁盘上提供地图png文件,在缩放级别15中,我有整个城市的平铺png。我也有16-18缩放级别的瓷砖,但仅适用于某些区域

我想设置平铺层,这样当用户处于缩放级别18时,地图将显示级别15的缩放平铺作为回退

我尝试设置选项
maxNativeZoom
,但对我无效

这是我的密码:

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

我可以使用一些选项让它工作吗?或者我需要用某种方式来破解它吗?或者有一些示例代码吗?

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

代码中没有逻辑检查该分幅在该缩放级别上是否存在图像


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

只是为了让人们知道,我不久前编写了插件来解决这个确切的用例:

用缩放比例较低的缩放分幅替换缺少的分幅(404错误)

在OP的情况下,您只需像往常一样指定
maxZoom
Tile Layer选项,并且每当在当前缩放级别发现一个Tile丢失时,插件将尝试用上一缩放级别的“父”Tile替换它(适当缩放和剪裁,使其适合丢失的Tile),依此类推,直到找到平铺或达到
minZoom

L.tileLayer.fallback(URLMetplate{
minZoom:8,
最大缩放:18
});
免责声明:我是该插件的作者