2012-02-25 21 views
3

phpとgoogleマップを使って簡単なトラッカーを作成しようとしています。今はトラッカーが動作していますが、特定のマーカーとの近接を検出する必要があります。たとえば、ユーザーが私の「家」(マーカー)の30m以内にいる場合、スクリプトはステータスを更新し、「そういう家にいる」と言います。私はこれをPHPで達成したいと思います。最良の方法は、各マーカーの長さ/緯度を検出し、その周りに単純な周囲を作成し、ユーザーがその周囲の長さおよび緯度の場所を検出するかどうかです。私が多分数学的方程式からやっていく可能性があるこの例がありますか?PHP/Googleマップ - Geofence

+0

質問に回答を書いたり、タイトルに[解決済み]を使用しないでください。自分で答えを見つけた場合は、下の回答欄に投稿してください。あなたがrep <100を持つ新しいユーザーであるため、7時間でそれを行うことができます。 – abcd

+0

@Keiran Lovettどのデータベースを使用していますか?postgresqlを使用できる可能性はありますか? –

+0

ヨーダを指摘してくれてありがとう! –

答えて

2

あなたが探しているのはHaversine式です。 MySQLとPHPでの使用方法については、an article on Google Codeがあります。使用さ

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

私は、私は別のポストで見つかった半正矢式を使用していました。

関連する問題