2011-11-09 29 views
7

Tôi đã tạo vòng kết nối bằng API V3 của Google Maps và cũng cố tạo một vòng tròn điểm đánh dấu có cùng bán kính.Vòng kết nối và vòng kết nối Google Maps V3 mà tôi đã tạo không khớp với

Sự cố: Thứ tôi tạo là xiên trong khi bản đồ của Google Maps là hình tròn đẹp. Có chuyện gì?

Google Maps V3 Vòng Mã

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

Trả lời

4

Một điều bạn cần phải nhớ đây, vòng tròn google là cho khoảng cách giữa hai điểm trên một hình cầu (trái đất) đó là tại sao vòng tròn của bạn không giống nhau.

Bạn không chỉ rõ mục đích của vòng kết nối trong ví dụ của bạn là gì, nhưng từ đoạn mã tôi có thể nói nó có liên quan đến khoảng cách đi lại. Trong trường hợp đó bạn có thể quan tâm để xem xét:

The Haversine Formula

hoặc

The Spherical Law of Cosines

Cũng this page có thể cung cấp cho bạn với một số cơ sở về cách tinh chỉnh công thức của bạn để có được hình dạng vòng tròn đúng .

Chỉnh sửa: Vì mục đích chính xác, trái đất không phải là một hình cầu hoàn hảo, nhưng cho tất cả các mục đích thực tế, nó được giả định là một.

2

Để tính khoảng cách trên hình cầu, bạn có thể sử dụng Google Maps geometry library. Để yêu cầu việc sử dụng thư viện:

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

Sau đó, mã JS vòng tròn của bạn sẽ là:

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!" 
    }); 
} 
Các vấn đề liên quan