Googleマップの最新バージョンを使用します。経度と緯度を使用してマーカーを追加し、JavaScriptを使用してすべてのマーカーを含めるようにマップのズームレベルを自動的に調整するにはどうすればよいですか?
3 に答える
Google Maps API v3 は、LatLngBounds
複数のオブジェクトを追加できるオブジェクトを提供しLatLng
ます。Map.fitBounds()
ここで説明されているように、これを関数に渡すことができます。
部分的な例
var latlng = [
new google.maps.LatLng(1.23, 4.56),
new google.maps.LatLng(7.89, 1.01),
// ...
];
var latlngbounds = new google.maps.LatLngBounds();
for (var i = 0; i < latlng.length; i++) {
latlngbounds.extend(latlng[i]);
}
map.fitBounds(latlngbounds);
緯度/経度のペアごとにマーカーオブジェクトをインスタンス化して、Google マップにマーカーを追加します。
var marker = new google.maps.Marker({
position: currentLatLng,
map: map,
title:"Title!"
});
マーカー コンストラクターのマップオプションは、新しい市場オブジェクトをマップに関連付けます。
マップをズームして新しいマーカーを含めるには、マップオブジェクトでfitBoundsメソッドを使用します。fitBounds は、latLngBoundsオブジェクトをパラメーターとして受け取ります。このオブジェクトには、境界を調整して新しい緯度/経度を含める便利なextendsメソッドがあります。したがって、単一の latLngBounds オブジェクトでextendを呼び出して、すべてのポイントをスピンするだけです。これにより、すべてのマーカーが含まれるように境界が拡張されます。これが完了したら、このオブジェクトをマップのfitBoundsメソッドに渡すと、ズームしてすべての新しいマーカーが表示されます。
以下は私のためにトリックをしました
map.fitBounds(bounds);
// add a zoom to the map
var listener = google.maps.event.addListener(map, 'idle', function()
{
if(map.getZoom() > 16)
map.setZoom(17);
google.maps.event.removeListener(listener);
});
setZoom() メソッドで目的のズームを設定します。値が大きいほど、場所の詳細が広く表示され、値が小さいほど、場所の詳細が絞り込まれて縮小されます