Сделайте так, чтобы карты Google центрировались вокруг географических местоположений и увеличивали соответственно - PullRequest
8 голосов
/ 27 ноября 2008

Я хотел бы передать x количество географических местоположений в API Карт Google, сосредоточить его вокруг этих мест и установить соответствующий уровень масштабирования, чтобы все местоположения были видны на карте. То есть показать все маркеры, которые в данный момент находятся на карте.

Возможно ли это с тем, что API Карт Google предлагает по умолчанию, или мне нужно решить, чтобы создать это самостоятельно?

Ответы [ 4 ]

9 голосов
/ 29 сентября 2010

Я использовал 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);
    
3 голосов
/ 27 ноября 2008

Есть несколько способов сделать это, но это довольно легко, если вы используете API V2. Смотрите этот пост для примера , этот пост группы или этот пост .

2 голосов
/ 09 октября 2009

Для V3 zoomToMarkers

1 голос
/ 17 апреля 2012

Идея Грея великолепна, но не работает как есть. Я должен был взломать 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);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...