我想使用我的应用用户的位置,更具体地说是纬度和经度值。
我需要它们在变量中使用,以便我可以使用 url 发送它们......
我以前从未在 iOS 和 Xcode 上使用过位置,并且在 Internet 上找不到与我的问题相匹配的内容......
所以我希望有人可以用代码示例向我解释:)
谢谢你帮助来自德国的劳伦兹
我想使用我的应用用户的位置,更具体地说是纬度和经度值。
我需要它们在变量中使用,以便我可以使用 url 发送它们......
我以前从未在 iOS 和 Xcode 上使用过位置,并且在 Internet 上找不到与我的问题相匹配的内容......
所以我希望有人可以用代码示例向我解释:)
谢谢你帮助来自德国的劳伦兹
您可以使用 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;
第 1 步:在您的项目中添加 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
您可以将 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 中,此代码会静默失败,即您不会收到任何错误或警告。
您需要做两件额外的事情才能使位置正常工作:
需要在 Info.plist 文件中添加以下任何一个或两个键。
这些是字符串类型,值可以是任何消息描述或为空。
现在您需要为相应的定位方法请求授权。使用以下任一调用:
迅速:
var locationManager = CLLocationManager()
locationManager.distanceFilter = kCLDistanceFilterNone
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
locationManager.startUpdatingLocation()