这是一个出租车应用程序,可以获取客户的位置(纬度,长度)并计算每个出租车司机和客户之间的行程距离,以便了解哪个出租车司机更靠近客户。
我将出租车司机的所有位置都存储在网络数据库中。 我搜索了lat1,lat2 long1,long2的方法并返回Kilo米的距离。
Google地图具有距离矩阵API,但禁止在不显示地图的情况下使用它 (我不需要地图,如果您知道可能的解决方案,我将能够使用谷歌地图服务) 幸运的是,Bing地图允许在不显示地图的情况下计算行程距离!在下面的教程中:http://msdn.microsoft.com/en-us/library/gg636957.aspx
但我正面临两个问题:
*它将位置作为String(位置名称),我想将其作为float(lat和long)给出
*我不知道如何在PHP中使用XML(如何在PHP变量中存储行驶距离)
我一直在寻找一周,我将非常感谢你的帮助()
答案 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;
}
}