有没有人有任何演示网站可以告诉我如何判断我是否在某个地址?
所以我想要一个地址列表,当我接近一个地址时,我希望应用程序引发一个事件,然后我可以响应。
编辑
经纬度接近警报实际上会更好
有没有人有任何演示网站可以告诉我如何判断我是否在某个地址?
所以我想要一个地址列表,当我接近一个地址时,我希望应用程序引发一个事件,然后我可以响应。
编辑
经纬度接近警报实际上会更好
此代码是 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);
}