Ada*_*ire 24
这是迈克的答案,其中包含一些神奇数字的注释.对于一些测试数据,它似乎对我来说很好:
function calc_distance($point1, $point2)
{
$radius = 3958; // Earth's radius (miles)
$deg_per_rad = 57.29578; // Number of degrees/radian (for conversion)
$distance = ($radius * pi() * sqrt(
($point1['lat'] - $point2['lat'])
* ($point1['lat'] - $point2['lat'])
+ cos($point1['lat'] / $deg_per_rad) // Convert these to
* cos($point2['lat'] / $deg_per_rad) // radians for cos()
* ($point1['long'] - $point2['long'])
* ($point1['long'] - $point2['long'])
) / 180);
return $distance; // Returned using the units used for $radius.
}
Run Code Online (Sandbox Code Playgroud)
小智 7
它可以用数学来完成......
function calc_distance($point1, $point2)
{
$distance = (3958 * 3.1415926 * sqrt(
($point1['lat'] - $point2['lat'])
* ($point1['lat'] - $point2['lat'])
+ cos($point1['lat'] / 57.29578)
* cos($point2['lat'] / 57.29578)
* ($point1['long'] - $point2['long'])
* ($point1['long'] - $point2['long'])
) / 180);
return $distance;
}
Run Code Online (Sandbox Code Playgroud)
您也可以尝试点击Web服务来计算距离.让其他人做繁重的工作.
https://www.zipcodeapi.com/API#distance
查看用于计算两点之间的大圆距离的Haversine公式.这里可以找到更多样品
Haversine配方:
(注意角度需要以弧度表示才能传递给trig函数).