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

15

我希望使用我的应用程序用户的位置,更具体地说是纬度和经度值。

我需要将它们用作变量,以便我可以通过URL发送它们...

我以前从未在iOS和Xcode上处理过位置,并且在互联网上找不到任何与我的问题匹配的内容...

所以我希望有人能够用代码示例向我解释一下:)

感谢您的帮助 来自德国的Laurenz

3个回答

48

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

包含框架:

在导航器中选择您的项目。

在“链接二进制库”下点击加号按钮。

将Corelocation添加到您的项目中。

导入头文件:

#import <CoreLocation/CoreLocation.h>

声明CLLocationManager:

CLLocationManager *locationManager;

初始化定位管理器:

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

然后,使用

float latitude = locationManager.location.coordinate.latitude;
float longitude = locationManager.location.coordinate.longitude;

17

步骤1:在项目中添加CoreLocation框架。

  1. 选择 ->
  2. 选择
  3. 点击加号<+>按钮,弹出框架列表。
  4. 搜索并它。

屏幕截图1

屏幕截图2

步骤2:在需要获取位置的视图控制器的头文件中编写以下代码:

#import <CoreLocation/CoreLocation.h>

此外,在接口中添加CLLocationManagerDelegate

现在,创建LocationManager对象。

 CLLocationManager *locationManager;

步骤3:在ViewDidLoad方法中编写以下代码:

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

    [locationManager requestAlwaysAuthorization]; //Note this one

您可以将 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);

第四步:在iOS 8中,此代码会默默失败,即您不会收到任何错误或警告。

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

  1. 向Info.plist添加键
  2. 请求授权,向位置管理器请求启动。

下面的任何一个或两个键都需要添加到Info.plist文件中:

  1. NSLocationWhenInUseUsageDescription
  2. NSLocationAlwaysUsageDescription

它们是字符串类型,值可以是任何消息说明或空值。

现在,您需要请求相应位置方法的授权。使用以下其中一个调用:

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

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接