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 来判断用户是不是越过下一个回合?
是否可以在不使用 CoreLocation 的情况下在 IOS 中获取位置?我们可以使用网络提供商获取它吗?
Apple 在 iOS CoreLocation API 中查询啥 CellID 数据库?
如何将 CoreLocation 值从一个 VIewController 传递到 iOS 中的 AppDelegate?