0

有没有人有任何演示网站可以告诉我如何判断我是否在某个地址?

所以我想要一个地址列表,当我接近一个地址时,我希望应用程序引发一个事件,然后我可以响应。

编辑

经纬度接近警报实际上会更好

4

1 回答 1

1

此代码是 php 而不是 javascript,但您应该能够了解发生了什么。

这是我用来检查地址是否在另一个地址附近的公式。(这基本上是你想要做的)

由于地球曲率等原因,实际计算出的公式非常复杂,因此它使用近似技术,并根据 distance_km 计算边界框。

然后,您只需要检查您的地址坐标是否在该边界框中。

我使用谷歌地图 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 回答