5

Esistono dei modi semplici per trovare il riquadro di delimitazione di una polilinea utilizzando l'API v3 di Google Maps? Sto lavorando a un progetto in cui ho bisogno di aggiornare i limiti man mano che i dati vengono aggiunti e rimossi dalla mappa. Questo è abbastanza semplice semplicemente facendo bd.extend (punto) dove bd è l'oggetto associato e il punto è un oggetto LatLng. Il problema è quando comincio a rimuovere i dati che mi piacerebbe che cambiassero i limiti e lo zoom indietro. Ci sono delle funzioni incorporate che possono farlo o dovrò scrivere qualcosa per me stesso?Ottenere i limiti di una polina nell'API di Google Maps v3

risposta

4

Il v2 API ha avuto il metodo GPolyline.getBounds() per fare esattamente questo. Tuttavia sembra che non ci sia un metodo equivalente nello v3 API.

Si consiglia di gestire ciò ignorando la proprietà changed del proprio PolylineMVCObject per ricevere una notifica quando l'oggetto cambia stato. Quindi puoi calcolare il rettangolo di selezione usando il metodo LatLngBounds.extend() che hai suggerito.

Penso che Google abbia intenzionalmente omesso tali metodi dall'API v3 nel tentativo di mantenere l'API leggera. Un'omissione simile discussed a couple of days ago on Stack Overflow era il metodo GMap2.clearOverlays().

7

Espansione sulla soluzione di oenpelli, questo è il metodo esteso getBounds() che sto usando per ricreare la funzionalità dell'API V2. Funziona perfettamente nel mio progetto.

google.maps.Polyline.prototype.getBounds = function() { 
    var bounds = new google.maps.LatLngBounds(); 
    this.getPath().forEach(function(item, index) { 
     bounds.extend(new google.maps.LatLng(item.lat(), item.lng())); 
    }); 
    return bounds; 
}; 

Basta ricordare che questo deve essere aggiunto dopo l'API JavaScript è caricato, così nel vostro metodo init.

Problemi correlati