DesiredAcuracy和DistanceFilter在CoreLocation中的作用是什么,ios

时间:2015-07-17 12:42:44

标签: ios iphone gps core-location

当我在ios项目中从CoreLocation走过时,我正在挑选用户的GPS坐标,我想选择Lats& longs说每1米或每10秒,

我可以使用DesiredAcuracy和DistanceFilter吗?

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

或者我应该创建自己的计时器吗?

2 个答案:

答案 0 :(得分:1)

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

DesiredAcuracy

  

接收器尽力达到要求的准确度;但是,实际的准确性并不能保证。

     

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

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

kCLLocationAccuracyBestForNavigation

  

使用尽可能高的精度并将其与其他传感器数据结合使用。此级别的准确性旨在用于需要始终获得精确位置信息的导航应用程序,并且仅在插入设备时使用。

kCLLocationAccuracyKilometer

  

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

kCLLocationAccuracyBest

  

使用最高级别的准确性。   适用于iOS 2.0及更高版本。

DistanceFilter

  

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

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

答案 1 :(得分:0)

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

#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