计算给定纬度和长度的两个位置之间的行程/行驶距离(Bing图)

时间:2014-12-12 13:18:49

标签: php xml google-maps bing-maps bing

这是一个出租车应用程序,可以获取客户的位置(纬度,长度)并计算每个出租车司机和客户之间的行程距离,以便了解哪个出租车司机更靠近客户。

我将出租车司机的所有位置都存储在网络数据库中。 我搜索了lat1,lat2 long1,long2的方法并返回Kilo米的距离。

Google地图具有距离矩阵API,但禁止在不显示地图的情况下使用它 (我不需要地图,如果您知道可能的解决方案,我将能够使用谷歌地图服务) 幸运的是,Bing地图允许在不显示地图的情况下计算行程距离!在下面的教程中:http://msdn.microsoft.com/en-us/library/gg636957.aspx

但我正面临两个问题:
*它将位置作为String(位置名称),我想将其作为float(lat和long)给出 *我不知道如何在PHP中使用XML(如何在PHP变量中存储行驶距离)

我一直在寻找一周,我将非常感谢你的帮助()

1 个答案:

答案 0 :(得分:1)

您可以使用Google Maps Geocoding API将位置名称转换为纬度和经度。比如做

$location = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA");

文档:https://developers.google.com/maps/documentation/geocoding/

您可以使用json_decode以PHP对象的形式访问内容。所以这应该有效:

print_r(json_decode($location));

使用上面的位置变量。纬度和经度就在那里。

对于PHP中的XML:使用SimpleXMLElement可能是最简单的:http://php.net/manual/en/simplexml.examples-basic.php

顺便说一句,您不需要距离API,如果您拥有两个位置的纬度和经度,您可以自己计算距离。最简单的方法只是一个三角形和毕达哥拉斯,但因为地球是一个球体,这不是确切的。您可以复制/粘贴此代码段。我是从http://www.geodatasource.com/developers/php获得的。

function distance($lat1, $lon1, $lat2, $lon2, $unit) {

  $theta = $lon1 - $lon2;
  $dist = sin(deg2rad($lat1)) 
    * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) 
    * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  $dist = acos($dist);
  $dist = rad2deg($dist);
  $miles = $dist * 60 * 1.1515;
  $unit = strtoupper($unit);

  if ($unit == "K") {
    return ($miles * 1.609344);
  } else if ($unit == "N") {
    return ($miles * 0.8684);
  } else {
    return $miles;
  }
}
相关问题