我正在构建一个住宿网站,该网站要求我计算两点之间的距离:
-
位置A:是住宿建筑(如果用户搜索房间,则房间将分配给具有通用邮政编码的建筑)。如前所述,每栋宿舍楼都有自己的邮政编码。房产被分配给一栋住宿楼,这就是确定其位置的方式。例如,物业1位于住宿楼3中,其邮政编码为
LS18 4AA
- 地点B:那是大学。该大学有一个通用的纬度和经度值
我正在努力实现的目标:
我想做的是,当用户查看一处房产时,它会得到所在建筑的邮政编码(住宿建筑的位置存储为数据库中的邮政编码),然后计算它与大学所在地的距离(有一个固定的纬度/经度值)。
唯一更改的值是基于用户正在查看的属性的后代码值。
我正在与之斗争:
我只是不知道如何根据用户正在查看的房产来获得邮政编码,然后计算它到大学的距离。即位置A距离位置B 7英里。
目前,我已经知道如何计算两个lat-long值之间的距离,但由于位置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值。
您可以使用Google地理编码API
下面可以看到所需呼叫的示例:
http://maps.googleapis.com/maps/api/geocode/json?address=POSTCODE&sensor=false
这将返回一个json响应,但是您可以根据