2016-03-31 92 views
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和長爲大學的位置。前兩個值只是爲了測試而輸入的值,它的工作原理是,代碼計算這兩組數據之間的距離。通過根據用戶正在瀏覽的財產長期緯度值來替換,但理想情況下,我想前兩個值,並且大廈郵編財產是英寸

回答

0

你可以使用Googles Geocoding API

的例子需要調用可以看到下面:

http://maps.googleapis.com/maps/api/geocode/json?address=POSTCODE&sensor=false 

這將返回一個JSON響應,但是你可以通過這只是分析,因爲你需要