ios中CoreLocation中DesiredAcuracy和DistanceFilter的作用是啥

Posted

技术标签:

【中文标题】ios中CoreLocation中DesiredAcuracy和DistanceFilter的作用是啥【英文标题】:What is the role of DesiredAcuracy and DistanceFilter in CoreLocation, iosios中CoreLocation中DesiredAcuracy和DistanceFilter的作用是什么 【发布时间】:2015-07-17 12:42:44 【问题描述】:

当用户在 ios 项目中从 CoreLocation 步行时,我正在选择他的 GPS 坐标,我想选择每 1 米或每 10 秒的纬度和经度,

我可以使用 DesiredAcuracy 和 DistanceFilter 这样做吗?

如果不是,这 2 个(DesiredAcuracy 和 DistanceFilter)实际上会做什么?

或者我应该创建自己的计时器来完成它?

【问题讨论】:

这可能会有所帮助:***.com/questions/6979319/… 【参考方案1】:

我可以使用 DesiredAcuracy 和 DistanceFilter 吗? 是的,根据docs:

所需准确度

接收机尽最大努力达到要求的精度;但是,不能保证实际的准确性。

您应该为此属性分配一个适合您的使用场景的值。例如,如果您只需要一公里内的当前位置,则应指定kCLLocationAccuracyKilometer 而不是kCLLocationAccuracyBestForNavigation。更准确地确定位置需要更多时间和更多精力。

在您的情况下,您应该将kCLLocationAccuracyKilometer 用于未插电的设备(例如,用户使用它来跑距离)或kCLLocationAccuracyBestForNavigation 用于插电的设备(例如,在汽车中)

kCLLocationAccuracyBestForNavigation

使用尽可能高的精度并将其与其他传感器数据相结合。这种精度水平适用于始终需要精确位置信息的导航应用,并且仅在设备插入时使用。

kCLLocationAccuracyKilometer

精确到最近的公里。 适用于 iOS 2.0 及更高版本。

kCLLocationAccuracyBest

使用***别的准确度。 适用于 iOS 2.0 及更高版本。

距离过滤器

此距离是相对于之前交付的位置测量的。 >使用值kCLDistanceFilterNone 通知所有动作。该属性的默认值为kCLDistanceFilterNone

因此,如果您需要频繁更新距离(即用户必须移动多少距离才能收到更新),您应该使用kCLDistanceFilterNone

【讨论】:

感谢@Erakk 的回复,所以如果我将 DistanceFilter 设置为 10Meters ,每 10 米触发一次位置更新代表正确吗? 是的,但苹果自己说,例如,10 米将是它的目标精度,但你可能会得到 9 米更新和 11 米更新。 只是一个额外的:kCLLocationAccuracyBestForNavigation 在任何情况下都可以工作,而不仅仅是插入。问题在于,由于需要额外的处理来确保准确性,它会占用过多的电池电量。【参考方案2】:

您必须使用核心位置框架。所以不要忘记添加和导入核心位置框架。

#import <CoreLocation/CoreLocation.h>

CLLocation *locA = [[CLLocation alloc] initWithLatitude:lat1 longitude:long1];

CLLocation *locB = [[CLLocation alloc] initWithLatitude:lat2 longitude:long2];

CLLocationDistance distance = [locA distanceFromLocation:locB];

//Distance in Meters
//1 meter == 100 centimeter
//1 meter == 3.280 feet
//1 square meter == 10.76 square feet

【讨论】:

以上是关于ios中CoreLocation中DesiredAcuracy和DistanceFilter的作用是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中使用 corelocation 来判断用户是不是越过下一个回合?

iOS核心笔记—CoreLocation框架-基础

是否可以在不使用 CoreLocation 的情况下在 IOS 中获取位置?我们可以使用网络提供商获取它吗?

Apple 在 iOS CoreLocation API 中查询啥 CellID 数据库?

如何将 CoreLocation 值从一个 VIewController 传递到 iOS 中的 AppDelegate?

iOS CoreLocation框架