icon google example google-maps overlay polyline

example - API de Google Maps: calcula el centro/zoom de Polyline



google.maps.marker example (2)

Basado en @ 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);

Tengo una superposición que se genera dinámicamente a partir de los datos del usuario, por lo que necesito saber cómo encontrar el centro de esa superposición.

Actualmente, solo estoy usando las primeras coordenadas de la superposición, pero eso realmente no representa el centro de la superposición. Por lo tanto, cuando cargo el mapa, no está centrado en la superposición.

¿Alguien tiene un buen método para centrar el mapa en la superposición, calculando el centro, no codificándolo con dificultad?

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 };


Si tiene una lista de coordenadas, puede recorrerlas y agregarlas a un objeto LatLngBounds . Aquí hay un ejemplo para la API V3, pero el concepto en V2 es similar:

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

Después de eso, puedes obtener el centro con:

bounds.getCenter();

O, como alternativa, puede llamar directamente a map.fitBounds() , que centrará el mapa alrededor del centro de los límites y ajustará el zoom, de modo que los límites completos se ajusten exactamente al puerto de visualización.

map.fitBounds(bounds);