1

リーフレット用のオフライン マップがあります。メガバイト単位の重みが最小であるため、このマップには 2 つのセクターがあります。最初のセクターには 11 番目から 14 番目までのズームがあります。2 番目のセクターには、11 番目から 17 番目までのズームがあります。

ユーザーが最初のセクターでマップを表示し、最大 14 番目のズームまでズームインしたい場合、マップはこれを許可せず、自動的に 14 番目のズームにズームアウトします。

また、ユーザーが 2 番目のセクターを ZOOM したい場合、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 に答える