有没有人有任何演示网站可以告诉我如何判断我是否在某个地址?
所以我想要一个地址列表,当我接近一个地址时,我希望应用程序引发一个我可以响应的事件。
修改
拉特/长距离警报实际上会更好
答案 0 :(得分:1)
此代码是php而不是javascript,但您应该能够了解正在发生的事情。
这是我用来检查地址是否在另一个地址附近的公式。 (这基本上就是你想做的事)
由于地球曲率等原因导致的实际公式非常复杂,因此使用近似技术,并根据distance_km计算边界框。
然后,您只需要检查您的地址坐标是否在该边界框内。
我使用google maps 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);
}