[英]How to do a user initiated precision location using CoreLocation?
这是我的代码(实现类已声明CLCoreLocationManagerDelegate协议):
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
NSLog(@"locations %@", locations);
}
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
NSLog(@"auth status: %u", status);
}
- (void)noteLocation {
if ([CLLocationManager locationServicesEnabled] == NO)
{
NSLog(@"rejected");
return;
};
CLLocationManager* manager = [CLLocationManager new];
manager.delegate = self;
manager.pausesLocationUpdatesAutomatically = NO;
manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
[manager startUpdatingLocation];
}
运行noteLocation
方法,我的应用程序会短暂打开“ thisApp”“想要使用您的当前位置”提示。 但它立即关闭。 我两种方法都无法回答。 而且委托方法永远不会触发。
我只是在努力做到这一点。 但是,也有一个更大的体系结构问题。 我的应用程序对其所编录的商品具有注释当前位置功能,因此用户可以将其当前位置标记为该商品的位置。 除非他们选择该选项,否则我不需要(或不想)浪费运行GPS的电池。 但是当他们这样做时,我想要尽可能精确的价值。 我的想法是以最大的精度运行它,等待几次更新(也许要确保该值稳定下来),然后记录该最终值。 有更好的食谱吗?
UPDATE
提示消失了,因为我需要将LocationManager实例存储在不会收集垃圾的地方。
我看到您正在使用kCLLocationAccuracyBestForNavigation
,它可以提供最佳的准确性。 除非您试图获取运动中的用户或对象的当前位置,否则不必等待太多时间来更新位置。
CLLocation包含两个属性- horizontalAccuracy
和verticalAccuracy
。 您可以通过执行一些测试并显示这些属性的值来测量程序的准确性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.