0

私が住所にいるかどうかを確認する方法を教えてくれるデモ サイトを持っている人はいますか?

そのため、アドレスのリストを取得し、アドレスに近づいたときに、アプリケーションでイベントを発生させて応答できるようにしたいと考えています。

編集

緯度/経度の近接アラートは、実際にはさらに優れています

4

1 に答える 1

1

このコードは javascript ではなく php ですが、何が起こっているかは理解できるはずです。

これは、住所が別の住所の特定の範囲内にあるかどうかを確認するために使用した式です。(これは基本的にあなたがやりたいことです)

地球の曲率などにより、これを計算するための実際の式は非常に複雑であるため、これは近似手法を使用し、distance_km に基づいてバウンディング ボックスを計算します。

次に、住所座標がその境界ボックス内にあるかどうかを確認するだけです。

Google マップ API を使用して、各住所の緯度/経度を特定しました。

function approx_boundingbox($lat, $lon, $distance_km) {

        $lat_km_per_degs  = array(
            0  => 110.574,
            15 => 110.649,
            30 => 110.852, 
            45 => 111.132,
            60 => 111.412,
            75 => 111.618,
            90 => 111.694);

        $lon_km_per_degs  = array(
            0   => 111.320,
            15  => 107.551,
            30  => 96.486, 
            45  => 78.847,
            60  => 55.800,
            75  => 28.902,
            90  => 0,
            105 => 28.902,
            120 => 55.800,          
            135 => 78.847,      
            150 => 96.486, 
            165 => 107.551,
            180 => 111.320
            );      

        // determine km per deg approxmation for lat
        foreach ($lat_km_per_degs as $deg => $km) {
            if ($lat < $deg) {
                $lat_km_per_deg = $km;
            }
        }   

        // determine km per deg approxmation for lon
        foreach ($lon_km_per_degs as $deg => $km) {
            if ($lon < $deg) {
                $lon_km_per_deg = $km;
            }
        }           

        // radius in deg
        $lat_delta = ($distance_km / $lat_km_per_deg);
        $lon_delta = ($distance_km / $lon_km_per_deg);

        // calculate approximate box
        $min_lat = $lat - $lat_delta;
        $max_lat = $lat + $lat_delta;
        $min_lon = $lon - $lon_delta;
        $max_lon = $lon + $lon_delta;

        return array($min_lat, $min_lon, $max_lat, $max_lon);
    }
于 2013-08-09T05:07:23.767 に答える