计算两个坐标(经度,纬度)之间的距离是地图应用中常用的功能。下面是计算两个坐标距离的方法,示例中使用的是PHP语言。
使用 Haversine 公式计算两个坐标之间的距离
Haversine公式是常用的计算两个坐标之间距离的公式。下面是使用Haversine公式计算两个坐标之间距离的PHP代码:
function distance($lat1, $lon1, $lat2, $lon2) {
$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;
return ($miles * 1.609344); // 公里
}
echo distance(22.333,114.188,31.2304,121.4737); // 1,020.9086766701 公里
以上代码中的distance()
函数使用了4个参数,分别是第一点的经度和纬度,以及第二点的经度和纬度。函数返回值为两点之间的距离(以公里为单位),使用echo
输出值。
使用 Google Maps API 计算两个坐标之间的距离
使用Google Maps API计算两个坐标之间距离需要先获取Google Maps API的API Key。然后使用以下代码:
function getDrivingDistance($address1, $address2, $apiKey) {
$url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=".urlencode($address1)."&destinations=".urlencode($address2)."&key=".$apiKey;
$resp_json = file_get_contents($url);
$resp = json_decode($resp_json, true);
return $resp['rows'][0]['elements'][0]['distance']['text'];
}
echo getDrivingDistance('香港特別行政區中環','上海市虹橋區虹梅路333号', '你的API Key');
以上代码中的getDrivingDistance()
函数使用了3个参数,分别是第一点的地址、第二点的地址和API Key。函数返回两点之间的驾车距离和时间,使用echo
输出距离。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php计算两个坐标(经度,纬度)之间距离的方法 - Python技术站