我希望使用我的应用程序用户的位置,更具体地说是纬度和经度值。
我需要将它们用作变量,以便我可以通过URL发送它们...
我以前从未在iOS和Xcode上处理过位置,并且在互联网上找不到任何与我的问题匹配的内容...
所以我希望有人能够用代码示例向我解释一下:)
感谢您的帮助 来自德国的Laurenz
我希望使用我的应用程序用户的位置,更具体地说是纬度和经度值。
我需要将它们用作变量,以便我可以通过URL发送它们...
我以前从未在iOS和Xcode上处理过位置,并且在互联网上找不到任何与我的问题匹配的内容...
所以我希望有人能够用代码示例向我解释一下:)
感谢您的帮助 来自德国的Laurenz
您可以使用 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);
第四步:在iOS 8中,此代码会默默失败,即您不会收到任何错误或警告。
您需要做两件额外的事情才能使位置工作:
下面的任何一个或两个键都需要添加到Info.plist文件中:
它们是字符串类型,值可以是任何消息说明或空值。
现在,您需要请求相应位置方法的授权。使用以下其中一个调用:
Swift:
var locationManager = CLLocationManager()
locationManager.distanceFilter = kCLDistanceFilterNone
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
locationManager.startUpdatingLocation()