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

格雷的想法很棒,但不能按原样工作。我不得不为zoomToMarkers API V3 设计一个 hack:

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 回答