40

だから私はこのアプリケーションを leafet.js で作っています。draw_grid()このアプリケーションでは、画面にグリッドを手動で描画する必要があり、画面に多数のポリゴンを描画する関数で注意を払っています。

リーフレットマップの変更をトリガーするために呼び出しているこの関数があります。 zoom- ズーム整数で、マップ上に描画されるタイルのサイズを制御するsizedict のようなものです。{x:1,y:1}(タイルが描かれている単位は地図上の緯度、経度のポイントであるため、変更する必要があります。

function changeZoom(zoom,size){
    map.setZoom(zoom); 
    setSize(size);   
    setTimeout(drawGrid,500)s;

}

setTimeout を使用する必要がある理由はignores、マップのアニメーション化が完了するまで、リーフレットがマップ上に描画コマンドを実行するためです (レイヤーとして実行しています)。

代わりにこれを非同期に行う方法は?

4

3 に答える 3

65

ここmap.zoomendのAPIで説明されているイベントを使用できます

map.on('zoomend', function() {
    drawGrid();
});

マップがズーム アニメーションを終了すると、drawGrid関数が呼び出されます。

于 2013-09-04T11:56:34.103 に答える
19

Leaflet の新しいバージョンでは、「zoomed」はもはやイベントではありません。" zoomstart" と " zoomend" イベントがあります:

map.on("zoomstart", function (e) { console.log("ZOOMSTART", e); });
map.on("zoomend", function (e) { console.log("ZOOMEND", e); });
于 2014-01-29T13:47:24.427 に答える