Sử dụng JavaScript trong trình duyệt, làm cách nào để xác định khoảng cách từ vị trí hiện tại của tôi đến một vị trí khác mà tôi có vĩ độ và kinh độ?Cách tìm khoảng cách của tôi đến một vị trí đã biết trong JavaScript
12
A
Trả lời
30
Nếu mã của bạn chạy trong một trình duyệt, bạn có thể sử dụng HTML5 geolocation API:
window.navigator.geolocation.getCurrentPosition(function(pos) {
console.log(pos);
var lat = pos.coords.latitude;
var lon = pos.coords.longitude;
})
Một khi bạn biết vị trí hiện tại và vị trí của "mục tiêu" của bạn, bạn có thể tính toán khoảng cách giữa chúng trong cách được ghi lại trong câu hỏi này: Calculate distance between two latitude-longitude points? (Haversine formula).
Vì vậy, kịch bản hoàn chỉnh trở thành:
function distance(lon1, lat1, lon2, lat2) {
var R = 6371; // Radius of the earth in km
var dLat = (lat2-lat1).toRad(); // Javascript functions in radians
var dLon = (lon2-lon1).toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c; // Distance in km
return d;
}
/** Converts numeric degrees to radians */
if (typeof(Number.prototype.toRad) === "undefined") {
Number.prototype.toRad = function() {
return this * Math.PI/180;
}
}
window.navigator.geolocation.getCurrentPosition(function(pos) {
console.log(pos);
console.log(
distance(pos.coords.longitude, pos.coords.latitude, 42.37, 71.03)
);
});
Rõ ràng tôi 6643 mét từ trung tâm của Boston, MA ngay bây giờ (đó là vị trí thứ hai mã hóa cứng).
Xem những liên kết này để biết thêm thông tin:
Thanks a lot. Tôi có thêm một truy vấn. Bạn có thể giúp tôi trong việc tìm kiếm vĩ độ và kinh độ của một địa điểm cụ thể không. – Dalee
Bạn đã thử gì? –
Tôi đã cố gắng tìm khoảng cách từ vị trí hiện tại của mình đến một địa chỉ cụ thể. Dù sao tôi đã tìm thấy điều đó. Cảm ơn vì nhắn lại. – Dalee