2012-12-12 18 views
12

Tarayıcıda JavaScript'i kullanarak bulunduğum konumdan, enlem ve boylamı olan başka bir konumdaki mesafeyi nasıl belirleyebilirim? Eğer mevcut konumu ve "hedefin" pozisyonunu öğrendiğinizdeBenim konumumdaki uzaklığa mesafeden geçiş yapmak için JavaScript (boş alan) Bulunduğum yer (mesafe) Konum())

window.navigator.geolocation.getCurrentPosition(function(pos) { 
    console.log(pos); 
    var lat = pos.coords.latitude; 
    var lon = pos.coords.longitude; 
}) 

, içeri aralarındaki mesafeyi hesaplayabilir: kodunuzu tarayıcıda çalışıyorsa

cevap

30

, HTML5 coğrafi konum API kullanabilirsiniz Bu soruda belgelenen yol: Calculate distance between two latitude-longitude points? (Haversine formula).

Yani tam komut haline gelir:

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

Görünen o ki ben Boston merkezinden 6643 metre duyuyorum, MA şu anda (yani sabit kodlanmış ikinci konum).

fazla bilgi için bu bağlantıları bakınız:

+0

Çok teşekkürler. Bir tane daha sorgum var. Belirli bir yerin enlemini ve boylamını bulmama yardım edebilir misin? – Dalee

+0

Daha önce ne denediniz? –

+0

Geçerli konumumdan belirli bir adrese mesafe bulmaya çalışıyordum. Her neyse onu buldum. Cevap verdiğin için teşekkürler. – Dalee