我需要在我的应用中在地图上显示currentLocation的horizontalAccuracy。为此,我在viewDidLoad()中添加了一行代码; (_currentLocation是CLLocationManager的位置。)
label4Accuracy.text = [NSString stringWithFormat:@"Accuracy: %.fm", _currentLocation.horizontalAccuracy];
它显示的准确性。
问题是准确性不会改变。如果我们等待足够(但并非总是如此),horizontalAccuracy会改变其准确性。
我希望我的应用能够做的是改变准确度并实时在地图上显示。
我预计在CLLocationManager附近可能会有一个方法; - (CLLocationAccuracy *)horizontalAccuracyUpdated():
但没有。所以我的问题是我应该在哪里放置上面的代码行来显示currentLocation的horizontalAccuracy,它根据实际设备的当前精度而变化?
答案 0 :(得分:0)
从您的问题中不清楚您是使用自己的CLLocationManager实例,还是从MKMapView获取当前位置。
如果您只是使用MKMapView,那么每次更新用户的位置时,您的地图视图都会调用方法- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
,并且它传递的userLocation
变量将具有一个.horizontalAccuracy
参数,以米为单位给出精度。
因此,将视图控制器设置为地图视图的委托,并实现该方法并在那里观察更新。
如果您实际使用的是CLLocationManager,除了委托方法为- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
之外,情况也是如此。