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

Posted

技术标签:

【中文标题】如何在 iOS 上的变量中获取位置(纬度和经度值)?【英文标题】:How to get Location (latitude & longitude value) in variable on iOS? 【发布时间】:2012-09-26 00:14:06 【问题描述】:

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

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

我以前从未在 ios 和 Xcode 上使用过位置,但在 Internet 上没有找到与我的问题相符的内容...

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

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

【问题讨论】:

【参考方案1】:

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

包含框架:

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

单击“将二进制文件与库链接”下的加号按钮

将 Corelocation 添加到您的项目中。

导入头文件:

#import <CoreLocation/CoreLocation.h>

声明 CLLocationManager:

CLLocationManager *locationManager;

初始化 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;

【讨论】:

【参考方案2】:

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

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

第 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

您可以将所需的准确度值设置为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 中,此代码会静默失败,即您不会收到任何错误或警告。

你需要做两件额外的事情才能让定位工作:

    向您的 Info.plist 添加密钥 请求授权,要求位置管理器开始。

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

    NSLocationWhenInUseUsageDescription NSLocationAlwaysUsageDescription

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

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

    [self.locationManager requestWhenInUseAuthorization] [self.locationManager requestAlwaysAuthorization]

【讨论】:

【参考方案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

【讨论】:

以上是关于如何在 iOS 上的变量中获取位置(纬度和经度值)?的主要内容,如果未能解决你的问题,请参考以下文章

从函数中获取经度和纬度值

如何同时使用 GPS 和网络提供商在 Android 中获取当前位置的纬度和经度值

如何在swift ios中从移动网络获取纬度和经度[关闭]

反应本机(IOS)。我需要更新和打印值纬度和经度

如何将纬度和经度传递给另一个函数 - 快速定位

iOS 7 到 iOS 8 中当前位置纬度和经度的不同行为