私は2つのポストコード間の距離を計算しようとしています。 1つのポストコードの座標は一般的ですが、もう1つのポストコードはデータベースに保存されています。以下のコードは、一般的な郵便番号と私が入力した郵便番号の間の距離には作用しません。上記1としてjavascriptを使用して2つのポストコード間の距離を計算する
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/ –
この行は何をしようとしていますか?私には奇妙に見えます。間違った関数のシグニチャで、値を追加していないようです: 'var distanceFromSpecificPoint = getDistanceFromLatLonInKm.bind(null、52.486637、-1.890952);' – ManoDestra
また、 'a'の計算にいくつかの角括弧を入れることもできます。これまでの計算の数学的妥当性をチェックしていないが、それはすぐに思い浮かぶエラーの1つの可能な領域である。また、2回のsin演算を2回行うことを避けるために、その計算でMath.powを呼び出すこともできます。 – ManoDestra