拥有一个获得gps location
的简单应用。我想在app初始化之前获得一个gps位置。在我看来,GPS位置是异步更新的,当问题弹出时,我确实在后台加载了应用程序屏幕:“允许应用程序使用您当前的位置?”
那么,我怎么能回拨(抱歉,来自Ruby / JS背景)等到我到达当前位置。
代码:
- (void)viewWillAppear:(BOOL)animated { // Set the main view to utilize the entire application frame space of the device. // Change this to suit your view's UI footprint needs in your application. CLController = [[CoreLocationController alloc] init]; CLController.delegate = self; [CLController.locMgr startUpdatingLocation]; self.view.frame = [[UIScreen mainScreen] applicationFrame]; [super viewWillAppear:animated]; }
CoreLocationController.m
中的
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { NSLog(@"Update location"); if([self.delegate conformsToProtocol:@protocol(CoreLocationControllerDelegate)]) { [self.delegate locationUpdate:newLocation]; [self.locMgr stopUpdatingLocation]; # => wait initialisation until this point and than continue
答案 0 :(得分:3)
你真的需要启动并运行你的应用程序。
我会尝试(同时)处理延迟的两件事:
误导!从另一个屏幕打开开始。让用户对其他内容感兴趣。如果不是第一次运行,可能只需要一次点击即可获得修复。在第一次运行时,如果您知道它需要一点时间,请运行一个占用时间的小教程。
从最后一个位置开始 - 如果不准确的位置信息可能有害,这可能不适合您,但您可以存储应用退出时收到的最后一个位置,并在您启动应用时将其用作当前位置再次。当然你想表明这个位置是最好的猜测所以你可能想要用不确定性圆绘制你自己的位置点,表明整个地图是不确定的区域 - 直到你得到你的第一个GPS修复然后你就可以开始了绘制实际位置更新。
我认为,在等待更新位置时你不做任何事情的人为延迟将会比接受它需要花费很短时间并且尽可能多地尝试在那段时间做更多的用户体验。 / p>