2012-02-25 68 views
3

我試圖創建一個簡單的跟蹤器使用PHP和谷歌地圖。現在我有跟蹤器工作,但我希望它檢測到某些標記的接近度。例如,如果用戶在我的「房屋」(標記)30米範圍內,腳本會更新其狀態,說明它位於「某某家」。我希望這可以在PHP中實現。最好的方法是檢測每個標記的長/寬,並在其周圍創建一個簡單的邊界,然後檢測用戶是否在該邊界內長和寬。有沒有這樣的例子,我可以從工作或數學方程。PHP /谷歌地圖 - Geofence

+0

請不要在問題中寫出答案或在標題中使用[求助]。如果你自己想出了答案,請將其發佈在下面的答案框中。由於您是rep <100的新用戶,您可以在7個小時內完成此操作。 – abcd 2012-02-25 20:18:32

+0

@Keiran Lovett你在用什麼db?有沒有機會可以使用postgresql? – 2012-02-26 08:38:16

+0

謝謝你指出,尤達! – 2012-02-26 14:09:57

回答

2

解決方案中使用 -

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. 
} 

我用了半正矢公式我在另一篇文章中找到。