2010-01-17 10 views
5

Sto tracciando circa 20 marker su una mappa, posizioni in una città. Quando uso getLatLng per trovare il centro città è sempre un po 'rimosso dalle posizioni che sto progettando, il che significa che i marcatori si trovano di solito in un angolo della mia mappa anziché al centro.centrare una mappa di google basata sul marcatore lat valori lunghi

c'è un modo per centrare la mappa su una posizione che è più centrale per le mie posizioni? Suppongo di aver bisogno di una sorta di coordinata lat/long "media" calcolata dai 20 valori lat/long disponibili.

È possibile?

risposta

6

Trovare il centro dovrebbe essere piuttosto facile. Basta trovare le coordinate latitudinali e di longitudine più piccole e più grandi nel tuo gruppo di 20.

Il centro sarà [min_lat + (max_lat - min_lat)/2, min_long + (max_long - min_long)/2].

Qualcosa di simile:

var points = Array(); 
points.push(new GLatLng(xxx, yyy)); 
... 

min_lat = 90; 
max_lat = -90; 
min_long = 180; 
max_long = -180; 
for (p in points) { 
    if (p[0] < min_lat) { 
     min_lat = p[0]; 
    } 
    if (p[0] > max_lat) { 
     max_lat = p[0]; 
    } 
    if (p[1] < min_long) { 
     min_long = p[1]; 
    } 
    if (p[1] > max_long) { 
     max_long = p[1]; 
    } 
} 

center = new GLatLng(min_lat + (max_lat - min_lat)/2, 
        min_long + (max_long - min_long)/2]; 
map.setCenter(center, 10); 

Questo codice sarà probabilmente avere problemi se i vostri punti attraversano i confini di longitudine (& plusmn; 180 °). Suppone anche che i punti si trovino su una superficie piana (piuttosto che sulla superficie di una sfera).

Nulla di tutto questo dovrebbe avere molta importanza se si parla di coordinate a diverse centinaia di miglia l'una dall'altra negli Stati Uniti.

Problemi correlati