API Карт Google: Вычислить Центр / Масштаб Полилинии - PullRequest
25 голосов
/ 23 июля 2010

У меня есть наложение, которое динамически генерируется из пользовательских данных, поэтому мне нужно знать, как найти центр этого наложения.

В настоящее время я просто использую первые координаты наложения, но это действительно не представляет центр наложения. Поэтому, когда я загружаю карту, она не центрируется на оверлее.

У кого-нибудь есть хороший метод для центрирования карты на оверлее, вычисляя центр, а не кодируя его жестко?

var latlng = new google.maps.LatLng(38.269239, -122.276010);
    var myOptions = {
        zoom: 15,//Calculate this somehow?
        center: latlng,// Calculate value from array of coordinates?
        mapTypeId: google.maps.MapTypeId.HYBRID
    };

Ответы [ 2 ]

84 голосов
/ 23 июля 2010

Если у вас есть список координат, вы можете зациклить их и добавить их к объекту LatLngBounds .Вот пример для API V3, но концепция в V2 похожа:

var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < coordinates.length; i++) {
  bounds.extend(coordinates[i]);
}

После этого вы можете получить центр с помощью:

bounds.getCenter();

Или, альтернативно, вы можетеВызовите map.fitBounds() напрямую, что позволит центрировать карту вокруг центра границ и отрегулировать масштабирование так, чтобы все границы точно вписывались в порт просмотра.

map.fitBounds(bounds);
11 голосов
/ 21 августа 2013

На основе @ tux21b,

      var bounds = new google.maps.LatLngBounds();
      polyline.getPath().forEach(function(e){//can't do polyline.getPath()[i] because it's a MVCArray
          bounds.extend(e);
      })         
      _map.fitBounds(bounds);
...