15

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

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

我以前从未在 iOS 和 Xcode 上使用过位置,并且在 Internet 上找不到与我的问题相匹配的内容......

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

谢谢你帮助来自德国的劳伦兹

4

3 回答 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;
于 2012-10-04T21:39:24.047 回答
17

第 1 步:在您的项目中添加 CoreLocation 框架。

  1. 选择目标->构建阶段
  2. 选择链接二进制与库
  3. 单击加号(+)按钮。这将弹出框架列表。
  4. 搜索CoreLocation 框架添加它。

截图 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);

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

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

  1. 将密钥添加到您的 Info.plist
  2. 请求位置管理器的授权,要求它开始。

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

  1. NSLocationWhenInUseUsageDescription
  2. NSLocationAlwaysUsageDescription

这些是字符串类型,值可以是任何消息描述或为空。

现在您需要为相应的定位方法请求授权。使用以下任一调用:

  1. [self.locationManager requestWhenInUseAuthorization]
  2. [self.locationManager requestAlwaysAuthorization]
于 2015-06-04T13:50:50.020 回答
3

迅速:

var locationManager = CLLocationManager()
locationManager.distanceFilter = kCLDistanceFilterNone
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
locationManager.startUpdatingLocation()

更多信息在这里:https ://developer.apple.com/library/mac/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/occ/cl/CLLocationManager

于 2015-06-19T20:37:52.887 回答