2010-01-17 7 views
5

Estoy trazando unos 20 marcadores en un mapa, ubicaciones en una ciudad. Cuando uso getLatLng para encontrar el centro de la ciudad siempre está un poco alejado de las ubicaciones que estoy trazando, lo que significa que los marcadores generalmente se encuentran en una esquina de mi mapa en lugar de en el centro.centrando un mapa de Google basado en el marcador lat. Valores largos

¿Hay alguna manera de centrar el mapa en una ubicación que sea más central para mis ubicaciones? Supongo que necesito algún tipo de coordenada latitud/longitud "promedio" calculada a partir de los 20 valores lat/long que tengo disponibles.

¿Esto es posible?

Respuesta

6

Encontrar el centro debería ser bastante fácil. Simplemente encuentre las coordenadas de latitud y longitud más pequeñas y más grandes en su grupo de 20.

El centro será [min_lat + (max_lat - min_lat)/2, min_long + (max_long - min_long)/2].

Algo así como:

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); 

Este código, probablemente tendrá problemas si sus puntos de cruce de los límites de longitud (& plusmn; 180 °). También supone que los puntos están ubicados en una superficie plana (en lugar de la superficie de una esfera).

Nada de eso debería importar mucho si se trata de coordenadas dentro de varios cientos de millas en Estados Unidos.

Cuestiones relacionadas