我从磁盘提供地图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)
我可以使用某些选项,或者我需要以某种方式破解它吗?或者是否有一些示例代码?
当你说它对你不起作用时,我猜你在上面的代码中看到的是到处都是级别 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。