如何在iOS上获取变量中的位置(纬度和经度值)?

Lau*_*ück 15 cocoa-touch location geolocation ios

我想使用我的应用用户的位置,更具体地说是纬度和经度值.

我需要它们在变量中使用,以便我可以使用url发送它们...

我从来没有在iOS和Xcode上的位置工作过,发现我在互联网上的问题没有任何匹配...

所以我希望有人可以用代码示例向我解释:)

谢谢你帮助Laurenz来自德国

Pet*_*hou 48

您可以使用CoreLocation获取经度和纬度.

包含框架:

在导航器中单击您的项目.

单击"使用库链接二进制文件"下的加号按钮

将Corelocation添加到项目中.

导入头文件:

#import <CoreLocation/CoreLocation.h>
Run Code Online (Sandbox Code Playgroud)

声明CLLocationManager:

CLLocationManager *locationManager;
Run Code Online (Sandbox Code Playgroud)

初始化locationManager:

- (void)viewDidLoad
{
    locationManager = [[CLLocationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    [locationManager startUpdatingLocation];
}
Run Code Online (Sandbox Code Playgroud)

然后,使用

float latitude = locationManager.location.coordinate.latitude;
float longitude = locationManager.location.coordinate.longitude;
Run Code Online (Sandbox Code Playgroud)


Jay*_*bey 16

第1步:在项目中添加CoreLocation框架.

  1. 选择TARGETS - > Build Phases
  2. 选择Link Binary With Libraries
  3. 单击加号(+)按钮.这将弹出框架列表.
  4. 搜索CoreLocation框架添加它.

截图1

截图2

步骤2:将以下代码写入视图控制器的头文件中,以获取位置:

#import <CoreLocation/CoreLocation.h>
Run Code Online (Sandbox Code Playgroud)

另外,添加CLLocationManagerDelegate界面.

现在,创建LocationManager的对象

 CLLocationManager *locationManager;
Run Code Online (Sandbox Code Playgroud)

第3步:在,ViewDidLoad方法写下面的代码:

    locationManager = [[CLLocationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    [locationManager startUpdatingLocation];

    [locationManager requestAlwaysAuthorization]; //Note this one
Run Code Online (Sandbox Code Playgroud)

您可以将desiredAccuracy值设置为 kCLLocationAccuracyBest, kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracyHundredMeters, kCLLocationAccuracyKilometer, kCLLocationAccuracyThreeKilometers

现在,写下面的代码来获取纬度和经度值

    float Lat = locationManager.location.coordinate.latitude;
    float Long = locationManager.location.coordinate.longitude;
    NSLog(@"Lat : %f  Long : %f",Lat,Long);
Run Code Online (Sandbox Code Playgroud)

第4步:在iOS 8中,此代码无声地失败,即您不会收到任何错误或警告.

您需要做两件额外的事情才能让位置正常工作:

  1. 在Info.plist中添加一个密钥
  2. 请求位置管理员要求其启动的授权.

需要在Info.plist文件中添加以下任何一个或两个键.

  1. NSLocationWhenInUseUsageDescription
  2. NSLocationAlwaysUsageDescription

这些是String类型,值可以是任何消息描述或为空.

现在您需要请求相应位置方法的授权.使用以下任何一种电话:

  1. [self.locationManager requestWhenInUseAuthorization]
  2. [self.locationManager requestAlwaysAuthorization]