2

有一个简单的应用程序可以获取gps location. 我想在应用程序初始化之前获得一个 gps 位置。对我来说,GPS 位置似乎是异步更新的,当出现问题时,我确实在后台加载应用程序屏幕:“允许应用程序使用您当前的位置?”

好吧,我怎样才能进行回调(对不起,来自 Ruby / JS 背景)等到我得到当前位置。

编码:

- (void)viewWillAppear:(BOOL)动画
{
    // 设置主视图以利用设备的整个应用程序框架空间。
    // 更改此项以适应应用程序中视图的 UI 占用空间需求。
    CLController = [[CoreLocationController alloc] init];
    CLController.delegate = self;
    [CLController.locMgr startUpdatingLocation];

    self.view.frame = [[UIScreen mainScreen] applicationFrame];
    [超级viewWillAppear:动画];
}

CoreLocationController.m

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    NSLog(@"更新位置");
    if([self.delegate 符合ToProtocol:@protocol(CoreLocationControllerDelegate)]) {
        [self.delegate locationUpdate:newLocation];
        [self.locMgr stopUpdatingLocation];
    # => 等待初始化直到这一点,然后继续
4

1 回答 1

3

您真的只需要启动并运行您的应用程序。

我会尝试(同时)做两件事来处理延迟:

  • 误导!从打开另一个屏幕开始。让用户对其他事物感兴趣。一次点击的延迟可能是您获得修复所需的全部,特别是如果这不是第一次运行。在第一次运行时,当你知道这需要一点时间时,运行一个会占用时间的小教程。

  • 从最后一个位置开始 - 如果不准确的位置信息可能有害,这可能不适合您,但您可以存储应用程序退出时收到的最后一个位置,并在您再次启动应用程序时将其用作当前位置。当然,您想指出该位置最多是一个猜测,因此您可能想用不确定圆圈绘制自己的位置点,表明整个地图都是不确定区域 - 直到您获得第一个 GPS 定位然后您可以开始绘制真实位置更新。

我认为,在等待位置更新时您什么都不做的人为延迟将比接受这将需要很短的时间并尝试在那段时间内尽可能多地做更糟糕的用户体验。

于 2013-07-01T01:35:18.470 回答