我正在使用 Google地图开展地理围栏。我的问题是关于 CLCircularRegion 的最小半径。因为我想与该地区合作30米。但功能适用于100米。我搜索了很多,发现Apple需要最小半径100来创建一个区域,无论我设置了30米还是50米。
这是链接 - Geofencing iOS 6
此外,didEnterRegion在100米处打电话并且didExitRegion工作非常奇怪并花了很多时间。 我还读过,根据这些方法所说,它取决于塔式细胞等。
这是链接 - What is the maximum and minimum radius that can be set for regions in iOS geofencing
我想知道我是否将地区设置为50米。为什么它不按要求的区域半径工作。事实上,我发现它适用于半径100米。
以下是代码:
func createRegion(lat : CLLocationDegrees,lng : CLLocationDegrees) -> CLCircularRegion?
{
let latitude = lat
let longitude = lng
var radius = CLLocationDistance(50)
if radius > locationManager.maximumRegionMonitoringDistance
{
radius = locationManager.maximumRegionMonitoringDistance
}
let region = CLCircularRegion(center: CLLocationCoordinate2DMake(latitude, longitude), radius: radius, identifier: "TEST")
region.notifyOnEntry = true
region.notifyOnExit = true
return region
}
或者任何人都可以推荐具有Geo fence功能的好应用。这样我就可以将我的应用程序的准确性与它进行比较。
问题:我选择了半径50米并且“退出时”通知应该到来。但是我收到了250米左右的通知,而且时间超过了这个时间。请帮帮我
谢谢!
答案 0 :(得分:1)
看看Apple的开发人员文档:
在iOS模拟器或设备上测试区域监控代码时,请注意,跨越区域边界后可能不会立即发生区域事件。为防止虚假通知,iOS在满足特定阈值条件之前不会传递区域通知。具体来说,用户的位置必须跨越区域边界,远离边界最小距离,并在报告通知之前保持该最小距离至少20秒。
特定的阈值距离由当前可用的硬件和定位技术确定。例如,如果禁用了Wi-Fi,则区域监视的准确性会大大降低。但是,出于测试目的,您可以假定最小距离约为200米。
并且请注意,如果禁用了Wi-Fi,则准确性会降低。
答案 1 :(得分:0)
我认为您可以通过查看控制台中的设备日志对设备上的最小半径进行逆向工程。例如,如果我在装有 iOS 14.7 的 iPhone 8 上设置小于 100m 的半径,则会得到以下日志语句:
Fence:Start Started monitoring fence myapp/<private> (<<private>,<private>>, radius 100.000, active tech <private>)...
因此,在我看来,100m 似乎是最小值。