没有获得ios8中的纬度和经度值

时间:2014-11-05 12:34:42

标签: ios objective-c ipad ios8 ios8.1

我根据iOS8.1 SDK对我的应用进行了必要的更改以跟踪位置。我正在使用下面的代码来获得纬度和经度。尽管我没有得到纬度和经度值。我是否需要进行除此之外的任何更改以获取纬度和经度值?

在appdelegate.h中:

CLLocationManager *locationManager;

在appdelegate.m中:

- (void)applicationDidBecomeActive:(UIApplication *)application{
    if (locationManager==nil) {
        locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
            [locationManager requestAlwaysAuthorization];
        }
        [locationManager startUpdatingLocation];
    }

    CLLocation *location = [locationManager location];
    CLLocationCoordinate2D coordinate = [location coordinate];
    NSLog(@" location details %f %f ",locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude);
}

在Info.plist文件中

 <key>NSLocationAlwaysUsageDescription</key>
<string>This will be used to obtain or track your location.</string>

3 个答案:

答案 0 :(得分:2)

我相信当您的CLLocationManager实际检索到某个位置时,您不会使用CLLocationManagerDelegate来通知。试图立即从您的位置管理器获取位置几乎肯定不会每次都返回任何值,因为您只是要求它开始更新。

您需要做的是:

1)在appdelegate.m中将appdelegate类声明为CLLocationManager的委托。

self.locationManager = self;

2)告诉你的appdelegate.h文件采用CLLocationManagerDelegate协议

@interface AppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate>

3)在appdelegate.m中实现CLLocationManagerDelegate提供的locationManager:didUpdateLocations方法

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { }

4)在您刚刚实施的方法中获取您要查找的位置。 :)

我建议您查看Apple提供的documentation,因为您使用的是C样式解除引用操作符,我怀疑您是Objective-C语言的新手

答案 1 :(得分:0)

您是否检查了“设置”中的权限? 您应该期望在委托方法中将位置传递给您。用户访问后。否则,我不确定经理是否会在现场有一个位置。

答案 2 :(得分:0)

您还需要启用服务

if([CLLocationManager resolveClassMethod:@selector(locationServicesEnabled)]) {
    [CLLocationManager locationServicesEnabled];
}