我正在尝试创建一个PHP脚本,当GPS设备(跟踪器)进入具有预定义位置的“地理围栏”时,该脚本可以执行某些操作。我发现的大部分帮助都使用了hasrsine公式,但大多数尝试从一个点获得最近的位置。我几乎需要相反的东西 设备和“围栏位置”坐标在MySQL数据库中,我能够成功地将它们拉出来。现在我需要设置围栏位置中心周围的半径,从那个点开始,任何方向都应该是10米 每当设备进入这个10米半径范围内时,PHP都会做一些事情 所以A点(lat,lon)周围有10米半径,设备B将其lat,lon发送到SQL数据库,每当A点和B点相距10米以内时,就会发生一些事情。 我从哪里开始?在我的情况下,是否有任何用途? 我认为PHP可以计算A和B的距离差异,只要该距离小于10米,PHP就可以做到。
我认为这可以胜任。
function haversineGreatCircleDistance(
$latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000)
{
// convert from degrees to radians
$latFrom = deg2rad($latitudeFrom);
$lonFrom = deg2rad($longitudeFrom);
$latTo = deg2rad($latitudeTo);
$lonTo = deg2rad($longitudeTo);
$latDelta = $latTo - $latFrom;
$lonDelta = $lonTo - $lonFrom;
$angle = 2 * asin(sqrt(pow(sin($latDelta / 2), 2) +
cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2), 2)));
return $angle * $earthRadius;
}