google-maps-api-3 - marcadores - google.maps.marker example
¿Cómo obtener LatLngBounds de geometría de polígonos de características en google maps v3? (3)
Aquí hay otra solución para v3 Polygon:
var bounds = new google.maps.LatLngBounds();
map.data.forEach(function(feature){
if(feature.getGeometry().getType() === ''Polygon''){
feature.getGeometry().forEachLatLng(function(latlng){
bounds.extend(latlng);
});
}
});
Tengo muchas características poligonales cargadas con loadGeoJson y me gustaría obtener los latLngBounds de cada uno. ¿Necesito escribir una función que se repita a través de cada par de latitud larga en el polígono y haga una extensión () en un LatLngBounds para cada uno, o hay una manera mejor? (Si no es así, probablemente pueda encontrar la forma de recorrer los vértices de los polígonos, pero los punteros a un ejemplo de eso serían bienvenidos)
En la API de JavaScript de Google Maps v2, Polygon tenía un método getBounds (), pero no existe para Polygon v3. Aquí está la solución:
if (!google.maps.Polygon.prototype.getBounds) {
google.maps.Polygon.prototype.getBounds = function () {
var bounds = new google.maps.LatLngBounds();
this.getPath().forEach(function (element, index) { bounds.extend(element); });
return bounds;
}
}
Las características de Polígono no tienen una propiedad que exponga los límites, tiene que calcularlo por su cuenta.
Ejemplo:
//loadGeoJson runs asnchronously, listen to the addfeature-event
google.maps.event.addListener(map.data,''addfeature'',function(e){
//check for a polygon
if(e.feature.getGeometry().getType()===''Polygon''){
//initialize the bounds
var bounds=new google.maps.LatLngBounds();
//iterate over the paths
e.feature.getGeometry().getArray().forEach(function(path){
//iterate over the points in the path
path.getArray().forEach(function(latLng){
//extend the bounds
bounds.extend(latLng);
});
});
//now use the bounds
e.feature.setProperty(''bounds'',bounds);
}
});
Demostración: http://jsfiddle.net/doktormolle/qtDR6/