1
我構建一個住宿的網站,需要我來計算兩個點之間的距離:獲得位置A的位置,並計算到B位置的距離
- 定位問題的:是的住宿樓(如果用戶搜索房間,房間被分配到具有通用郵政編碼的建築物)。如上所述,每個住宿大樓都有其郵政編碼。屬性被分配到一個住宿樓,這是它的位置是如何確定的。例如,房產1在住宿樓3中,其具有郵編
LS18 4AA
。 - 位置B:哪所大學。大學具有通用的經度和緯度價值。
我想實現:
我想做的事情,就是當用戶瀏覽一個屬性,它會搶建是在郵政編碼(住宿樓位置作爲郵政編碼存儲在數據庫中),然後計算遠離大學位置的距離(其中有一個固定緯度/長度值)。
更改的唯一值是基於用戶正在查看的屬性的郵政編碼值。
什麼我掙扎:
我只是不能讓我圍繞如何基於什麼屬性的用戶查看,然後計算到大學的距離,以獲得郵編頭。即位置A距地點B7英里遠。
目前,我已經計算出如何計算兩個經緯度值之間的距離,但由於位置A是郵政編碼,因此我不確定如何轉換這些值。
這裏是我的代碼:
<script>
var x = getDistanceFromLatLonInKm(52.482799000000000, -2.000643000000000, 52.48463500000000, -1.980759000000000);
function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2){
// console.log(lat1, lon1, lat2, lon2);
// uni's location:
// 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>
這條線的位置:
var x = getDistanceFromLatLonInKm(52.482799000000000, -2.000643000000000, 52.48463500000000, -1.980759000000000);
最後兩個值是lat和長爲大學的位置。前兩個值只是爲了測試而輸入的值,它的工作原理是,代碼計算這兩組數據之間的距離。通過根據用戶正在瀏覽的財產長期緯度值來替換,但理想情況下,我想前兩個值,並且大廈郵編財產是英寸