web-dev-qa-db-ja.com

表示されているリーフレットマップの境界ボックスを取得しますか?

パンとズームを行うリーフレットマップがあります。マップの端の緯度/経度を動的に取得するにはどうすればよいですか?

29
bernie2436

ご想像のとおり、次のとおりです。

map.getBounds();

パンとズーム後に境界を取得する場合は、 events を使用します。

map.on('moveend', function() { 
     alert(map.getBounds());
});
43
tmcw

上記の答えは正しいですが、あまり役に立たず、残念ながら、リーフレットのドキュメントではgetBounds()呼び出しに関する詳細は提供されていません。

これをマップの初期化関数に追加すると、マップデータが表示されます:

map.on('dragend', function onDragEnd(){
    var width = map.getBounds().getEast() - map.getBounds().getWest();
    var height = map.getBounds().getNorth() - map.getBounds().getSouth();

    alert (
        'center:' + map.getCenter() +'\n'+
        'width:' + width +'\n'+
        'height:' + height +'\n'+
        'size in pixels:' + map.getSize()
    )});

サイズはマップウィンドウのピクセルサイズであり、境界はスケーリングされた内部サイズであることに注意してください。ズームしてみると、サイズは一定のままですが、高さはズームの各レベルで倍になります。

LatLngBoundsオブジェクトの下には多数のメソッドが存在するため、探している情報を提供できる呼び出しを見つけることができるはずです。

18
Roger Hill