Ho un sacco di funzionalità poligonali caricate con loadGeoJson e mi piacerebbe ottenere il latLngBounds di ciascuno. Devo scrivere una funzione che itera su ogni lat long pair nel poligono e fa un extend() su un LatLngBounds per ognuno, o c'è un modo migliore? (In caso contrario, posso probabilmente capire come iterare attraverso i vertici del poligono ma i puntatori a un esempio di quello sarebbe il benvenuto)Come ottenere LatLngBounds della geometria poligonale della feature in google maps v3?
16
A
risposta
25
Le caratteristiche di Polygon non ha una proprietà che espone i limiti, devi calcolare da solo
Esempio:
//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);
}
});
4
In Google Maps API JavaScript v2, Poligono avuto un getBounds() metodo, ma che non esiste per v3 Poligono. Ecco la soluzione:
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;
}
}
0
Ecco un'altra soluzione per v3 Poligono:
var bounds = new google.maps.LatLngBounds();
map.data.forEach(function(feature){
if(feature.getGeometry().getType() === 'Polygon'){
feature.getGeometry().forEachLatLng(function(latlng){
bounds.extend(latlng);
});
}
});
Problemi correlati
- 1. Google Maps v3 OverlayView.getProjection()
- 2. Google Maps V3: disegno biblioteca
- 3. API di Google Maps v2: LatLngBounds da CameraPosition
- 4. come ottenere tutti i marcatori su google-maps-v3
- 5. Google maps v3 polilinea tooltip
- 6. Come modificare SRID della colonna della geometria?
- 7. Raggio dell'area "visualizzabile" in google maps v3
- 8. Google Maps v3 geocoding lato server
- 9. Come mettere un infowindow sulla polilinea in Google Maps v3?
- 10. google maps api v3 senza etichette?
- 11. Marcatore gonfiabile in Google Maps v3
- 12. Google-Maps v3: come cambiare lo stile della mappa in base al livello di zoom?
- 13. Google Maps API V3 Infobox.js rimosso
- 14. posso ottenere mappe statiche nell'API di Google Maps API V3?
- 15. test geolocalizzazione google maps V3 localmente?
- 16. GWT + API di Google Maps v3
- 17. google maps api v3 senza trascinamento liscio
- 18. Approssimazione della distanza di Google Maps
- 19. all'interno di Polyline Google Maps V3
- 20. Come impostare la dimensione della mappa nell'API di Google Maps v3?
- 21. Google maps api v3 icone predefinite?
- 22. Indicatore V3 di Google Maps con etichetta
- 23. API di Google Maps v3: Drawing Manager
- 24. jqtouch/google maps api v3 issue
- 25. API JavaScript per Google Maps v3
- 26. google maps v3 API mouseover con poligoni?
- 27. Google Maps Api v3, icona Cluster personalizzata
- 28. API V3 di Google Maps: come passare a un indicatore specifico dall'esterno della mappa?
- 29. Aree grigie dell'API di Google Maps V3
- 30. Zoom su una mappa in Google Maps API V3
Questo non si applica ai MultiPolygon? –
dove aggiungere più coordinate? O modificare le coordinate (Lat, Lng)? –
@ manu29.d in v3, il controllo del tipo di geometria non è necessario. Basta chiamare e.feature.getGeometry(). ForEachLatLng (function (path) {bounds.extend (path);}) ha funzionato per me su un multipoligono. –