繁体   English   中英

用户如何使用CoreLocation启动精确定位?

[英]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包含两个属性- horizontalAccuracyverticalAccuracy 您可以通过执行一些测试并显示这些属性的值来测量程序的准确性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM