İki posta kodu arasındaki mesafeyi çözmeye çalışıyorum. Bir posta kodu koordinatları geneldir, ancak diğer posta kodu almam gereken veritabanında saklanır. Aşağıdaki kod, genel posta kodu ile girdiğim adres arasındaki mesafeyi aşmamaktadır.javascript kullanarak iki posta kodları arasındaki mesafeyi hesaplamak
var x = getDistanceFromLatLonInKm(52.482799000000000, -2.000643000000000, 52.48463500000000, -1.980759000000000);
function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2){
console.log(lat1, lon1, lat2, lon2);
var distanceFromSpecificPoint = getDistanceFromLatLonInKm.bind(null, 52.486637, -1.890952);
var R = 6371; // Radius of the earth in km
var dLat = deg2rad(lat2 - lat1); // deg2rad below
var dLon = deg2rad(lon2 - lon1);
var a =
Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
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;
}
function deg2rad(deg) {
return deg * (Math.PI/180)
}
document.getElementById('result').textContent = x;
console.log(x)
</script>
http://www.zipcodeapi.com/ –
Bu çizgi ne yapmaya çalışıyor? Bana garip görünüyor. Yanlış işlev imzası ve herhangi bir değer eklemiyor gibi görünmüyor: 'vari distanceFromSpecificPoint = getDistanceFromLatLonInKm.bind (null, 52.486637, -1.890952);' – ManoDestra
Ayrıca, hesabınıza bazı parantezler koymak için 'a'. Bu hesaplamaların matematiksel geçerliliğini şu ana kadar kontrol etmedik, ancak bu derhal akla gelen hata için olası bir alan. Ve iki günah işlemlerini iki kez yapmaktan kaçınmak için Math.pow'a yapılan bazı aramaları da kullanabilirsiniz. – ManoDestra