我正在制作一个脚本,其中一堆业务被加载到具有纬度和经度的mySQL数据库中.然后我提供该脚本的纬度和经度(最终用户),并且脚本必须计算从提供的lat/long到从数据库获得的每个条目的距离,并按最接近最远的顺序排序.
我实际上只需要大约10或20个"最近"的结果,但除了从数据库中获取所有结果并在每个结果上运行函数然后进行数组排序之外,我无法想到这样做.
这就是我已经拥有的:
<?php
function getDistance($point1, $point2){
$radius = 3958; // Earth's radius (miles)
$pi = 3.1415926;
$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);
$distance = round($distance,1);
return $distance; // Returned using the units used for $radius. …Run Code Online (Sandbox Code Playgroud)