2012-12-12 18 views

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:

+0

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

+0

Bạn đã thử gì? –

+0

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