iOS 获取当前地理坐标
iOS获取当前地理坐标,很简单几句代码,但是如果刚开始不懂,做起来也会也会出现一些问题。
1、导入定位需要用到的库:CoreLocation.framwork 。如果要显示地图,就要导入 MapKit.framwork 。
2、在info.plist里加入两行
NSLocationWhenInUseUsageDescription 当应用需要时候定位
NSLocationAlwaysUsageDescription 始终使用地位这行如果不加,那么启动的时候就不会弹出允许使用定位提示框,只能手动设置允许)。
3、导入类库 #import <CoreLocation/CoreLocation.h>, 添加代理 CLLocationManagerDelegate 。基本设置好了就可以直接代码实现了。
4、定义一个对象,做一些设置。
self.locationManager = [[CLLocationManager alloc] init];
// 设置定位精度,十米,百米,最好
self.locationManager.desiredAccuracy=kCLLocationAccuracyBest;
//每隔多少米定位一次(这里的设置为任何的移动)
self.locationManager.distanceFilter = kCLDistanceFilterNone;
self.locationManager.delegate = self; //代理设置
// 开始时时定位
if [CLLocationManager locationServicesEnabled])
{
// 开启位置更新需要与服务器进行轮询所以会比较耗电,在不需要时用stopUpdatingLocation方法关闭;
[self.locationManager startUpdatingLocation];
}else
{
NSLog@"请开启定位功能");
}
5、代理方法实现
//开启定位后会先调用此方法,判断有没有权限 -void)locationManager:CLLocationManager *)manager didChangeAuthorizationStatus:CLAuthorizationStatus)status { if [CLLocationManager authorizationStatus]==kCLAuthorizationStatusNotDetermined) {
//判断ios8 权限
if[self.locationManager respondsToSelector:@selectorrequestAlwaysAuthorization)])
{
[self.locationManager requestAlwaysAuthorization]; // 永久授权
[self.locationManager requestWhenInUseAuthorization]; //使用中授权
}
}else if[CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedWhenInUse) { [self.locationManager startUpdatingLocation]; } }
6、获取定位坐标
//成功获取到经纬度
- void)locationManager:CLLocationManager *)manager didUpdateToLocation:CLLocation *)newLocation fromLocation:CLLocation *)oldLocation
{
// 获取经纬度
NSLog@"纬度:%f",newLocation.coordinate.latitude);
NSLog@"经度:%f",newLocation.coordinate.longitude);
// 停止位置更新
[manager stopUpdatingLocation];
}
// 定位失败错误信息
-void)locationManager:CLLocationManager *)manager didFailWithError:NSError *)error
{
NSLog@"error");
}
完成:
这就是一个简单的地理坐标获取,如果要使用更多功能、路线、距离、大头针、地理编码换算等可以下载使用高德或百度的SDK,里面都头很详细的说明,和简单的方法调用!