私は、外部のJSONファイルから得たポイントと線ストリングを持つleaflet.jsマップを持っています。Leaflet.js - 地図ビュー上のgeoJSON座標に合わせる
追加した場合: map.setView(new L.LatLng(0,0)、10);
地図の緯度と経度を0,0に合わせます。マップセンターとズームがJSONのすべてのポイントにフィットするように設定するにはどうすればよいですか?
私は、外部のJSONファイルから得たポイントと線ストリングを持つleaflet.jsマップを持っています。Leaflet.js - 地図ビュー上のgeoJSON座標に合わせる
追加した場合: map.setView(new L.LatLng(0,0)、10);
地図の緯度と経度を0,0に合わせます。マップセンターとズームがJSONのすべてのポイントにフィットするように設定するにはどうすればよいですか?
getBounds
メソッドを持つFeatureGroupにすべてのレイヤーを追加できます。したがって、あなたはちょうど言うことができるはずです
L.FeatureGroupのgetBoundsメソッドは、少なくとも(少なくとも最新のバージョンではなく)0.3.1のmasterブランチでのみ利用できます。
自分の出発地から目的地までの道順をユーザーに示すときにこれを行う必要がありました。私は、あなたは、単にmap.fitBounds
がL.LatLng
同様の配列だけでL.LatLngBounds
オブジェクトを取るので、これは動作します
map.fitBounds(directionLatLngs);
を呼び出すことができますdirectionLatLngs
と呼ばれるL.LatLng
の配列に方向の私のリストを保存します私の場合。 マーカをすべてGeoJsonから描画しました。だから私はボタンをクリックすると繰り返し呼び出される関数を書いた。それがあなたの要求に合っていれば試してみてください。
function bestFitZoom()
{
// declaring the group variable
var group = new L.featureGroup;
// map._layers gives all the layers of the map including main container
// so looping in all those layers filtering those having feature
$.each(map._layers, function(ml){
// here we can be more specific to feature for point, line etc.
if(map._layers[].feature)
{
group.addLayer(this)
}
})
map.fitBounds(group.getBounds());
}
マップ/マーカーの状態が変更されても、マーカー/レイヤーの最新/現在の状態が取得されることを最大限に活用することができます。このメソッドが呼び出されるたびに、すべてのレイヤーが適度なズームレベルで表示されます。
よろしくお願いします。ですから、geoJSONレイヤーを追加するコードは分かります。 geojsonLayer.addGeoJSON(jsonData); map.addLayer(geojsonLayer); map.fitBounds(jsonGroup.getBounds()); 私はそれを次のように変更します: geojsonLayer.addGeoJSON(jsonData); map.addLayer(geojsonLayer); var jsonGroup = new L.FeatureGroup(jsonData); map.fitBounds(jsonGroup.getBounds()); それはうまくいくはずですか? – James
申し訳ありませんが、上記の投稿からすべての書式を取り除きました。私はコメントを保存するときにそれを保存する方法がわかりません。 – James
コメントでデバッグするのはかなり難しいです。 http://jsfiddle.netであなたのコードを貼り付けて、あなたが持っているもの(または少なくともその一部)を見せてもらえますか? – Jason