我試圖讓一個PHP腳本,可以做一些事情時,GPS設備(跟蹤)進入「地理圍欄」預定義的位置。我發現的大部分幫助都使用半正式公式,但大多數人都試圖從某一點獲得最近的位置。我非常需要相反的東西。
設備和「籬笆位置」座標是在MySQL數據庫中,我能拉他們成功地。現在我需要在圍欄位置中心周圍設置半徑,從該點開始任何方向的距離應該是10米。
只要設備在這個10米範圍內進入,PHP就會做一些事情。
所以點A(LAT,LON)周圍有10米半徑,裝置B發送其緯度,經度到SQL數據庫,每當點A和B是相互的10m以內,有事。 我從哪裏開始?在我的情況下,任何用途都有嗎? 我認爲PHP可以計算出A和B的距離差異,只要這個距離小於10m,PHP就會做一些事情。計算繞經/緯度GPS點半徑在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;
}
PHP的服務器上運行。究竟怎麼知道這個GPS設備在哪裏,它在做什麼? –
A和B座標都存儲在SQL數據庫中。 A始終是相同的座標(它不移動),B正在移動並每隔X秒將其位置更新到數據庫,因此最新的數據庫條目是B的最新位置。我已經完成了所有這些工作。 – Fid
所以當php更新分貝時,它會做一個選擇來計算A和B之間的距離,例如, '如果(dist($ A,$ B)<10){do_something(); }' –