Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在ios8中获取纬度和经度值_Ios_Objective C_Ipad_Ios8_Ios8.1 - Fatal编程技术网

无法在ios8中获取纬度和经度值

无法在ios8中获取纬度和经度值,ios,objective-c,ipad,ios8,ios8.1,Ios,Objective C,Ipad,Ios8,Ios8.1,我根据iOS8.1 SDK对我的应用程序进行了必要的更改,以跟踪位置。我正在使用下面的代码获取纬度和经度。尽管我没有获取纬度和经度值。我是否需要做除此之外的任何更改来获取纬度和经度值 在appdelegate.h中: CLLocationManager *locationManager; 在appdelegate.m中: - (void)applicationDidBecomeActive:(UIApplication *)application{ if (locationManage

我根据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>
NSLocationAlwaysUsageDescription
这将用于获取或跟踪您的位置。

我相信您没有利用CLLocationManager在您的CLLocationManager实际检索到位置时收到通知的CLLocationManager Legate。尝试直接从位置管理器获取位置几乎肯定每次都不会返回任何值,因为您只是请求它开始更新

您需要执行以下操作:

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

self.locationManager = self;
2) 告诉您的appdelegate.h文件采用CLLocationManagerDelegate协议

@interface AppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate>
4) 获取您在刚刚实现的方法中查找的位置。:)


我建议您看看Apple提供的,因为您使用的是C风格的解引用操作符。我怀疑您是Objective-C语言的新手。

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

您还需要启用这些服务

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

出于好奇,为什么要使用解引用运算符(->)而不仅仅是点语法?我不能在没有CLLocationManagerDelegate的情况下获取纬度和经度值吗?这是可能的,但不推荐使用,因为这将需要很多秒,如文档中所述。强烈建议使用提供的委托方法,以便您知道CLLocationManager何时完成更新。
if([CLLocationManager resolveClassMethod:@selector(locationServicesEnabled)]) {
    [CLLocationManager locationServicesEnabled];
}