2012-05-17 15 views
27

Acabo de copiar el código en este question y he aplicado mi latitud y longitudes. Sin embargo, las latitudes y longitudes serán dinámicas, y el center del mapa cambiará dependiendo de las latitudes y longitudes de las ubicaciones.Encontrar el centro de múltiples ubicaciones en Google Maps

El siguiente es el código de la otra pregunta

<!DOCTYPE html> 
<html> 

    <head> 
     <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
     <title>Google Maps Multiple Markers</title> 
     <script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script> 
    </head> 

    <body> 
     <div id="map" style="width: 500px; height: 400px;"></div> 
     <script type="text/javascript"> 
      var locations = [ 
       ['Bondi Beach', -33.890542, 151.274856, 4], 
       ['Coogee Beach', -33.923036, 151.259052, 5], 
       ['Cronulla Beach', -34.028249, 151.157507, 3], 
       ['Manly Beach', -33.80010128657071, 151.28747820854187, 2], 
       ['Maroubra Beach', -33.950198, 151.259302, 1] 
      ]; 

      var map = new google.maps.Map(document.getElementById('map'), { 
       zoom: 10, 
       center: new google.maps.LatLng(-33.92, 151.25), 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }); 

      var infowindow = new google.maps.InfoWindow(); 

      var marker, i; 

      for (i = 0; i < locations.length; i++) { 
       marker = new google.maps.Marker({ 
        position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
        map: map 
       }); 

       google.maps.event.addListener(marker, 'click', (function(marker, i) { 
        return function() { 
         infowindow.setContent(locations[i][0]); 
         infowindow.open(map, marker); 
        } 
       })(marker, i)); 
      } 
     </script> 
    </body> 

</html> 

Así que mi pregunta es, ¿cómo podría saber el centro del mapa al tener lugares dinámicos. Intenté dejar el center en blanco, pero el mapa no se cargó.

Respuesta

82

Primero puede crear un objeto LatLngBounds incluyendo todas las ubicaciones generadas dinámicamente. Usa el método extend para incluir los puntos. Luego puede obtener el centro del límite utilizando el método getCenter.

ACTUALIZACIÓN:

Código:

var bound = new google.maps.LatLngBounds(); 

for (i = 0; i < locations.length; i++) { 
    bound.extend(new google.maps.LatLng(locations[i][2], locations[i][3])); 

    // OTHER CODE 
} 

console.log(bound.getCenter()); 

Ilustración:

enter image description here

+2

Añadir map.fitBounds (ligado) al código de encajar el zoom mapa y centro de interfaz de usuario dentro de ciertos límites. –

0

que estoy haciendo esto promediando las latitudes y promediando las longitudes y el uso de los promedios como mi centro.

Ejemplo:

self.adjustPosition = function() { 
    var lat = 0, lng = 0; 

    if (self.nearbyPlaces().length == 0) { 
     return false; 
    } 

    for (var i = 0; i < self.nearbyPlaces().length; i++) { 
     lat += self.nearbyPlaces()[i].latitude; 
     lng += self.nearbyPlaces()[i].longitude; 
    } 

    lat = lat/self.nearbyPlaces().length; 
    lng = lng/self.nearbyPlaces().length; 

    self.map.setCenter(new window.google.maps.LatLng(lat, lng)); 
}; 
0

Este enfoque no funciona, ya que tendrá un promedio de los números y no obtener el "medio" de los números (latitud/longitud). Piénselo de esta manera, tiene 6 puntos en los EE. UU., Uno en CA y 5 en la costa este extendidos al norte y al sur. El 5 en la costa este pesa el promedio a la derecha (este) en el mapa y su punto central sería (este a oeste) alrededor de Georgia. Si quisiera evitar el uso de getCenter, debería buscar la dirección más alta y la más baja de este (lat +/- y long +/-) y encontrar el centro de cada dirección una vez que haya tenido los extremos.

0
private LatLng computeCentroid(List<LatLng> points) { 
double latitude = 0; 
double longitude = 0; 
int n = points.size(); 

for (LatLng point : points) { 
    latitude += point.latitude; 
    longitude += point.longitude; 
} 

return new LatLng(latitude/n, longitude/n); 

}

Cuestiones relacionadas