1

我有传单的离线地图。由于最小重量(以兆字节为单位),该地图有 2 个扇区:第一个扇区从第 11 个缩放到第 14 个。第二扇区从第 11 位放大到第 17 位。

我需要当用户在第一个扇区看到地图并想要放大超过 14 倍缩放时,地图将不允许这样做并自动缩小到第 14 倍缩放。

当用户想要缩放第二个扇区时 - 它可以正常工作到第 17 个缩放。

我使用这段代码:

 var layer1 = new L.tileLayer('map/all/{z}/{x}/{y}.png', { minZoom: 11, maxZoom: 14,   errorTileUrl:'empty.png', opacity:1});
    var layer2 = new L.tileLayer('map/center/{z}/{x}/{y}.png', { minZoom: 15, maxZoom: 17,errorTileUrl:'empty.png', opacity:1});


    var map = new L.Map('map', {
    center: new L.LatLng(55.74178084263216, 37.607244264547475),
    zoom: 11,
    minZoom: 11,
    maxZoom: 17,
    layers: [layer1,layer2]
    });
4

1 回答 1

1

当地图的缩放级别发生变化时,您可以捕捉到事件,并根据您显示的扇区之一在此处做出适当的决定。

我不确定您如何确定显示哪个扇区,所以下面的示例代码有注释。将您的逻辑放在此处以确定显示哪个图层。

// Called when Map zoom changes
map.on('zoomend', function() {
    if (/*The map is set to Sector 1*/) {
        // If the user zooms past 14, this will set them back to 14.
        if (map.getZoom() > 14) {
            map.setZoom(14);
        }
    }
});
于 2013-07-23T17:06:16.597 回答