gpt4 book ai didi

ios - 以更大的半径调用 didEnterRegion (iOS)

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:22:10 28 4
gpt4 key购买 nike

我希望更精确地调用 didEnterRegion,但我做不到。这是我所做的:我使用了 distanceFilter 和 desiredAccuracy 的最佳值(根据 Apple 的最精确的 GPS 设置)并且有一个目的地 CLCircularRegion(CLRegion 的子类)。

self.locationManager.distanceFilter = kCLLocationAccuracyBestForNavigation;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

@property (nonatomic, strong) CLCircularRegion *Destination;
self.Destination = [[CLCircularRegion alloc] initWithCenter:CLLocationCoordinate2DMake(43.907691, -69.963158) radius:5 identifier:@"Destination"];

[self.locationManager startMonitoringForRegion:self.Destination];

问题是当我距离这个目的地大约 150 米时,调用了 didEnterRegion。同样在相近的距离附近 didExitRegion 被调用。我希望在距离我 5 米时调用 didEnter 和 didExit 区域,而不是 150 米,正如我在启动 CLCircularRegion 时指定的那样。有没有人有办法解决吗?精度是我需要的,150m 而不是 5m 对我来说太不准确了。谢谢吨 -

(我用iPhone 4S测试)

最佳答案

虽然理论上目前的 GPS+ 技术设备可以达到 5 米的精度,但 Apple 可能出于各种原因阻止了这种区域监控精度。

一个是他们总是想要良好的用户体验,而您想要的 5 米精度在您通常从 GPS 读数中获得的精度范围内。因此,离开这样一个小区域也可能是因为当用户仍在该区域内时读数精度较低。 Apple 确实通过设置发布 regionEnter 或 regionExit 通知的阈值来掩盖此类错误。来自 Apple documentation :

When testing your region monitoring code in iOS Simulator or on a device, realize that region events may not happen immediately after a region boundary is crossed. To prevent spurious notifications, iOS doesn’t deliver region notifications until certain threshold conditions are met. Specifically, the user’s location must cross the region boundary, move away from the boundary by a minimum distance, and remain at that minimum distance for at least 20 seconds before the notifications are reported.

The specific threshold distances are determined by the hardware and the location technologies that are currently available. For example, if Wi-Fi is disabled, region monitoring is significantly less accurate. However, for testing purposes, you can assume that the minimum distance is approximately 200 meters

不过,既然您可以要求获得高精度读数,Apple 也应该考虑到这一点。正如您所评论的那样,另一种选择可能是使用 didUpdateLocation: 并确定是在区域内还是区域外。这样您就可以包含位置精度测试,并且仅在水平精度足够好时才接受退出/进入。

关于ios - 以更大的半径调用 didEnterRegion (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22417818/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com