获取位置A的位置并计算其到位置B的距离


Obtaining location of location A and calculating its distance to location B

我正在构建一个住宿网站,该网站要求我计算两点之间的距离:

  • 位置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响应,但是您可以根据

的需要对此进行解析