2011-11-09 5 views
7

Creé un círculo con la API de Google Maps V3 y también traté de hacer un círculo de marcadores con el mismo radio.Google Maps V3 El círculo y el círculo que creé no coinciden

Problema: El que he creado es oblicuo, mientras que el de Google Maps es un bonito círculo circular. ¿Qué salió mal?

Google Maps Código V3 Círculo

// Draw search circle 
search_circle = new google.maps.Circle; 
search_circle.setCenter(target_latlng); 
search_circle.setRadius(travel_time * average_speed); 
search_circle.setMap(map); 

enter image description here

Respuesta

4

Una cosa que hay que recordar aquí, el círculo Google está dando la distancia entre dos puntos de una esfera (la tierra), que es por qué su círculo no se ve igual.

No especificó cuál es el propósito del círculo en su ejemplo, pero desde el fragmento de código puedo decir que tiene algo que ver con las distancias de viaje. En ese caso, usted podría estar interesado mirar en:

The Haversine Formula

o

The Spherical Law of Cosines

también this page podría proporcionarle cierta base sobre la manera de ajustar su fórmula para obtener la forma del círculo correcto .

Editar: En aras de la exactitud, la tierra no es una esfera perfecta, pero para todos los fines prácticos se supone que es uno.

2

Para calcular distancias en una esfera, puede utilizar Google Maps geometry library. Solicitar al uso de la biblioteca:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=true_or_false"></script> 

A continuación, el código JS círculo sería:

num_theta_step = 365;    // number of steps 
for(theta = 0; theta < 365; theta += 365/num_theta_step) {       
    var circle_latlng = google.maps.geometry.spherical.computeOffset(target_latlng, R, theta); 
    var marker = new google.maps.Marker({ 
     position: circle_latlng, 
     map: map, 
     title:"Hello World!" 
    }); 
} 
Cuestiones relacionadas