locationManager在viewDidLoad中返回0.00000,0.00000坐标

时间:2014-08-11 15:44:30

标签: ios cllocationmanager

我试图找出如何获取我的位置坐标" currentCentre"在ViewDidLoad中,所以我可以在我的详细视图中自动查询谷歌数据(不点击任何内容),问题是最初的坐标是0.0000,0.0000而谷歌不能查询任何内容,但如果我放大地图和然后查询我返回谷歌搜索结果。我怎么能解决这个问题,我已经读过一些地方,这些地方经理需要更多的时间来找到我的位置,所以如果这就是问题,我可以用什么一两个衬垫创造一个人工延迟,所以我可以得到有效的坐标:

代码段:

- (void)viewDidLoad
{

[super viewDidLoad];
_mapView.delegate = self;

self.mapView.delegate = self;

[self.mapView setShowsUserLocation:YES];

locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];

[locationManager startUpdatingLocation];

[self autoQuery];

}

-(void)autoQuery {
NSLog(@"%f", currentCentre.latitude);
NSLog(@"%f", currentCentre.longitude);

[self queryGooglePlaces:@"cafe"]; //]self.detailItem];

NSLog(@"%@",self.detailItem);
}

3 个答案:

答案 0 :(得分:0)

如果你打电话,我实际上找到了解决问题的更好方法:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    NSLog(@"%f", currentCentre.latitude);
    [self autoQuery];
}

此方法不允许您在更新位置之前执行内部代码,因此一旦更新,内部代码将会执行。

答案 1 :(得分:0)

您可以使用位置管理器委托方法并在那里更新Google查询。

  - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { [self autoQuery]; }

答案 2 :(得分:0)

@rmaddy和其他可能很好奇的人,我现在明白我以前的解决方案不断更新,这是不可取的(我只想在打开视图时运行一次autoQuery),所以我添加了属性@property (非原子的)int计数;在标题中使用此代码以确保每次打开视图时仅调用一次自动查询

if (currentCentre.latitude != 0.000000)
{
    if (_count == 0) {
        [self autoQuery];
        _count = _count + 1;
    }
}

currentCentre在界面中定义,以获取GPS坐标:CLLocationCoordinate2D currentCentre;

如果有人有更好的方式或更有效的方式,请写评论。感谢