2010-10-28 36 views
5

Tôi có một số vấn đề với tính toán khoảng cách vòng tròn lớn bằng cách sử dụng bản đồ.Weird Great Circle Tính toán khoảng cách

Bối cảnh: http://airports.palzkill.de/search/

Bản đồ là nghĩa vụ phải làm việc như một bản đồ tìm kiếm khoảng cách vòng tròn lớn - bạn di chuyển điểm đánh dấu trung tâm vòng tròn hoặc đánh dấu bán kính, và vòng tròn được nhỏ hơn hoặc lớn hơn. Đối với mục đích gỡ lỗi, trường tiêu đề hộp hiển thị khoảng cách tính theo km.

Điều này chỉ hoạt động tốt miễn là trung tâm vòng tròn gần 0/0 và điểm đánh dấu bán kính không quá xa nó. Bạn càng di chuyển một trong hai điểm đánh dấu thành "cực đoan", thì càng có nhiều điểm tiếp xúc với toàn bộ điều đó và không tạo ra gì ngoài crap.

Đây là mã được sử dụng để tính toán các bản cập nhật, bạn cũng có thể tìm thấy toàn bộ mã trong js.js tập tin JS, dòng 146-184:

function searchmapupdate() 
{ 
rad_lat_radiuspos = (circleradiusmarker.getPosition().lat()*Math.PI/180); 
rad_lon_radiuspos = (circleradiusmarker.getPosition().lng()*Math.PI/180); 
rad_lat_circlecenter = (circlecentermarker.getPosition().lat()*Math.PI/180); 
rad_lon_circlecenter = (circlecentermarker.getPosition().lng()*Math.PI/180); 

circleradiusvar = Math.acos(Math.sin(rad_lat_circlecenter)*Math.sin(rad_lat_radiuspos)+Math.cos(rad_lat_circlecenter)*Math.cos(rad_lon_radiuspos)*Math.cos(rad_lon_circlecenter-rad_lon_radiuspos))*6371.01*1000; 

if (isNaN(circleradiusvar)==false) circle.setOptions({center:circlecentermarker.getPosition(), radius:circleradiusvar}); 

document.getElementById("mapsearchhead").innerHTML = Math.round(circleradiusvar/1000); 
} 

Kể từ khi toàn bộ điều không tính toán một số lượng đúng Tôi cho rằng bản thân toán học không hoàn toàn sai, tôi đoán chỉ có một số thứ "sửa đổi" bị thiếu? Thật không may tôi hoàn toàn tệ hại ở lượng giác, vì vậy tôi không có một đầu mối những gì có thể sai ở đây, hoặc thậm chí nơi để bắt đầu tìm kiếm ý tưởng về cách sửa chữa nó.

Marco

P.S .: Tôi biết rằng do tính chất hình cầu của các dự báo, toàn bộ điều có hành động "phản trực giác" xung quanh các cực. Nhưng điều đó không thực sự giải thích điều gì xảy ra khi bạn di chuyển cả hai điểm đánh dấu gần đường ngày xung quanh đường xích đạo (0/179, 0/-179).

+0

Từ chế độ xem cấp cao, tôi nhận thấy rằng chức năng vòng kết nối của bạn dường như hoạt động hoàn hảo khi điểm đánh dấu trung tâm nằm ở giữa bản đồ. Nó có vẻ như vấn đề là với cách bạn đang đối phó với các cạnh của bản đồ, không phải là một lỗi toán học cho mỗi se. –

+0

Có Sam, tôi nhận thấy như vậy: Vấn đề thực sự phát triển tồi tệ nhất càng gần bạn di chuyển đến dòng ngày/kinh tuyến thứ 180. Vì nó ít nhất là xung quanh 0/0-confluence, tôi cho rằng bản thân toán học thực sự là chính xác, nhưng tôi đoán tôi cần một số giá trị cải huấn. –

Trả lời

3

Được rồi, sau khi triển khai một số mã khác, tôi thực sự đã phát hiện ra lỗi trong phương trình: Sử dụng lon nơi tôi đã sử dụng lat.

Và có, tôi rất bối rối hiện nay - và không kém phần khó chịu, đã dành 5 giờ để xem các điều khoản và không tìm thấy lỗi rõ ràng này trước đó.

+3

Tất cả chúng ta đều ở đó. Cảm ơn bạn đã đăng bản sửa lỗi của mình. – GreenMatt

Các vấn đề liên quan