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

时间:2016-03-31 13:56:54

标签: javascript php jquery

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

  • 位置A :住宿大楼(如果用户搜索房间,房间被分配到建筑物,其具有通用邮政编码)。如上所述,每个住宿建筑都有其邮政编码。属性被分配到住宿建筑物,这是其位置的确定方式。例如,属性1位于住宿楼3中,其邮政编码为LS18 4AA
  • 位置B :哪所大学。大学具有通用的纬度和经度值。

我想要实现的目标:

我想要做的是,当用户查看属性时,它将获取它所在建筑物的邮政编码(住宿建筑位置存储为db中的邮政编码),然后计算其距离大学位置的距离(它有一个固定的纬度/长值)。

唯一更改的值是基于用户正在查看的属性的后置代码值。

我正在努力解决

我根本无法了解如何根据用户正在查看的属性获取邮政编码,然后计算其到大学的距离。即位置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);

最后两个值是大学位置的纬度和长度。前两个值只是为测试输入的值,并且它可以工作,代码计算这两组数据之间的距离。但理想情况下,我希望前两个值可以替换为基于用户正在查看的属性的长拉取值,以及对属性进行邮政编码的建筑物。

1 个答案:

答案 0 :(得分:0)

您可以使用Googles Geocoding API

所需电话的示例如下所示:

mapply(function(L,N){write.csv(L, paste0(N,".csv"));}, L=LoDFs,N=names(LoDFs))

这将返回一个json响应,但是你可以根据需要解析它