如何在 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 上的变量中获取位置(纬度和经度值)?的主要内容,如果未能解决你的问题,请参考以下文章