8

x 量の地理位置情報を Google Maps API に渡し、これらの位置を中心にして適切なズーム レベルを設定し、すべての位置が地図上に表示されるようにしたいと考えています。つまり、現在マップ上にあるすべてのマーカーを表示します。

これは Google Maps API がデフォルトで提供するもので可能ですか、それとも自分で構築するために解決する必要がありますか?

4

4 に答える 4

9

各ポイントにfitBounds (API V3)を使用しました。

  1. 変数を宣言します。

    var bounds = new google.maps.LatLngBounds();
    
  2. FOR ループで各マーカーを通過する

    for (i = 0; i < markers.length; i++) {
        var latlng = new google.maps.LatLng(markers[i].lat, markers[i].lng);
        bounds.extend(latlng);
    }
    
  3. 最後に電話

    map.fitBounds(bounds);
    
于 2010-09-29T14:24:53.833 に答える
3

これを行う方法はいくつかありますが、V2 API を使用している場合は非常に簡単です。例については、この投稿、このグループの投稿、またはこの投稿を参照してください。

于 2008-11-27T04:18:40.187 に答える
2

V3 にはzoomToMarkersがあります

于 2009-10-09T17:50:10.127 に答える
1

Gray's Idea is great but does not work as is. I had to work out a hack for a zoomToMarkers API V3:

function zoomToMarkers(map, markers)
{
    if(markers[0]) // make sure at least one marker is there
    {
        // Get LatLng of the first marker
        var tempmark =markers[0].getPosition();

        // LatLngBounds needs two LatLng objects to be constructed
        var bounds = new google.maps.LatLngBounds(tempmark,tempmark);

        // loop thru all markers and extend the LatLngBounds object
        for (var i = 0; i < markers.length; i++) 
        {
            bounds.extend(markers[i].getPosition());
        }

        // Set the map viewport 
        map.fitBounds(bounds);
    }

}
于 2012-04-17T16:37:08.183 に答える