我正在用谷歌地图研究地理围栏。我的问题是关于CLCircularRegion的最小半径。因为我想与该地区合作 30 米。但是该功能适用于 100 米。我搜索了很多,发现苹果需要最小半径 100 才能创建一个区域,无论我设置了 30 米还是 50 米。
这是链接 - 地理围栏 iOS 6
此外,didEnterRegion在100米处调用,didExitRegion工作非常奇怪,花费了很多时间。 我还读过,根据这些方法调用,这取决于塔单元等。
这是链接 - 可以为 iOS 地理围栏中的区域设置的最大和最小半径是多少。
我想知道我是否将该区域设置为 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
}
或者任何人都可以推荐具有地理围栏功能的好应用程序。这样我就可以将我的应用程序的准确性与它进行比较。
问:我选择了半径 50 米,应该会发出"退出时"通知。但是我在 250 米/附近收到通知,而且比这还要长一些时间。请帮帮我
谢谢!
看看苹果的开发者文档:
文章 苹果
官方文档
在 iOS 模拟器或设备上测试区域监视代码时,请注意区域事件可能不会在跨越区域边界后立即发生。为了防止虚假通知,iOS 在满足特定阈值条件之前不会传递区域通知。具体而言,用户的位置必须越过区域边界,离开边界的最小距离,并在报告通知之前保持该最小距离至少 20 秒。
具体的阈值距离由当前可用的硬件和位置技术确定。例如,如果禁用 Wi-Fi,则区域监视的准确性会大大降低。但是,出于测试目的,您可以假设最小距离约为 200 米。
并提醒,如果禁用了Wi-Fi,那么它将不太准确。
我认为您可以通过在控制台中查看设备日志来对设备上的最小半径进行逆向工程。例如,如果我在装有 iOS 100 的 iPhone 14.7 上设置的半径小于 14.7m,则会收到以下日志语句:
Fence:Start Started monitoring fence myapp/<private> (<<private>,<private>>, radius 100.000, active tech <private>)...
所以,就我而言,100m 似乎是最小的。