2011-12-02 11 views
6

Provo a ottenere i 10 marker più vicini dal centro della mappa di google e li ordina in base al centro per distanza in Javascript. Quindi diciamo che ho 100 Marker in un array Javascript - mi piacerebbe mostrare più informazioni sui 10 closest in una lista non ordinata in html. Ho trovato un esempio simile per api versione 2 (example in version 2), ma nulla per la versione 3 di google map api.Google Map ottiene 10 punti più vicini di tutti gli indicatori su una mappa

risposta

16

Qualunque cosa sia, è necessario calcolare tutte le distanze. Puoi farlo da solo con semplici equazioni o utilizzare la libreria geometrica di Google: http://code.google.com/intl/pl-PL/apis/maps/documentation/javascript/geometry.html e la sua funzione: computeDistanceBetween(). Quindi memorizza la distanza nella proprietà dell'indicatore personalizzato come ad esempio:

marker.distance = google.maps.geometry.spherical.computeDistanceBetween(marker.position, center.position); 

e ordinarlo comunque. Spero che aiuti.

+1

questo è esattamente il modo in cui lo farei. Per scale più piccole potresti probabilmente usare l'espressione di Pitagora planare per la distanza (differenza quadratica in latitudine + differenza quadratica in longitudine), non è così esatta ma potrebbe essere molto più veloce. – TMS

+0

Grazie, funziona perfettamente! –

0
  1. Ordina la matrice in base alla vicinanza al punto centrale della mappa. Utilizzare sort().
  2. Affettare il primo 10 con slice().
  3. Tracciare questi sulla mappa.
+0

Grazie, ho usato la funzione dalle prime risposte con la tua soluzione! –

+1

Per questo tipo di operazioni normalmente utilizzo la libreria [underscore] (http://underscore.org). Ha molti aiutanti per questo tipo di operazioni. Nel mio caso, ho usato '_.each' e' _.sort' sul mio array di marcatori. – bzin

Problemi correlati