2011-11-09 16 views
7

Ho creato una cerchia utilizzando l'API di Google Maps V3 e ho anche provato a creare una cerchia di marker con lo stesso raggio.Google Maps V3 Circle & Circle che ho creato non corrispondono a

Problema: Quello che ho creato è obliquo mentre quello di Google Maps è un bel cerchio rotondo. Che cosa è andato storto?

Google Maps Codice V3 Circle

// 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

risposta

4

Una cosa che dovete ricordare qui, il cerchio google sta dando la distanza tra due punti su una sfera (la terra), che è perché il tuo cerchio non ha lo stesso aspetto.

Non hai specificato quale sia lo scopo del cerchio nel tuo esempio, ma dal frammento di codice posso dire che ha qualcosa a che fare con le distanze di viaggio. In tal caso si potrebbe essere interessati a guardare in:

The Haversine Formula

o

The Spherical Law of Cosines

anche this page potrebbe fornirvi qualche base su come modificare la formula per ottenere la forma del cerchio corretta .

Modifica: Per motivi di correttezza, la terra non è una sfera perfetta, ma per tutti gli scopi pratici si presume che sia una.

2

Per calcolare le distanze su una sfera, è possibile utilizzare Google Maps geometry library. Per richiedere l'uso della libreria:

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

Poi, il codice JS cerchio sarebbe:

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!" 
    }); 
}