3

PHPとGoogleマップを使用して簡単なトラッカーを作成しようとしています。現在、トラッカーは機能していますが、特定のマーカーへの近接を検出する必要があります。たとえば、ユーザーが私の「家」(マーカー)から30m以内にいる場合、スクリプトはステータスを更新して「そうそうの家」にいることを示します。これをPHPで実現できるようにしたいと思います。最良の方法は、各マーカーの長さ/緯度を検出し、その周囲に単純な境界線を作成してから、ユーザーがその境界線内に長距離と緯度を配置しているかどうかを検出することです。私がおそらく数学の方程式から作業できるこの周りの例はありますか?

4

2 に答える 2

2

半正矢関数はあなたが探しているものです。MySQLとPHPでの使用方法を説明するGoogleCodeに関する記事があります。

于 2012-02-26T05:37:29.607 に答える
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.
}

別の投稿で見つけたHaversine式を使用しました。

于 2012-02-26T14:11:51.317 に答える