原生手机定位教程

1、首先导入CoreLocation.framework这个依赖库,并在相应的控制器里导入头文件import<CoreLocation/CoreLocation.h>


2、在info.plist文件里加入两个字段NSLocationWhenInUseUsageDescription,NSLocationAlwaysUsageDescription类型都是string类型的,如图

3、添加相应的协议 CLLocationManagerDelegate

4、下面就是代码部分

(1)、CLLocationManager * _locationManager;添加对象

(2)、初始化对象-(void)initializeLocationService{

_locationManager = [[CLLocationManager alloc] init];

// 设置代理

_locationManager.delegate = self;

// 设置定位精确度到米

_locationManager.desiredAccuracy = kCLLocationAccuracyBest;

// 设置过滤器为无

_locationManager.distanceFilter = kCLDistanceFilterNone;

// 开始定位

// 取得定位权限,有两个方法,取决于你的定位使用情况

// 一个是requestAlwaysAuthorization,一个是requestWhenInUseAuthorization

[_locationManager requestAlwaysAuthorization];//这句话ios8以上版本使用。

[_locationManager startUpdatingLocation];

}

(3)、实现协议中的方法-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

[ProgressHUD show:nil];

NSString * locaton = [NSString stringWithFormat:@"经度%lf纬度%lf",newLocation.coordinate.longitude,newLocation.coordinate.latitude];

NSLog(@"我的位置%@",locaton);

CLGeocoder * geocoder = [[CLGeocoder alloc] init];

[geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *array, NSError *error){

if (array.count > 0){

CLPlacemark *placemark = [array objectAtIndex:0];

//将获得的所有信息显示到label上

//获取城市

NSString *city = placemark.locality;

if (!city) {

//四大直辖市的城市信息无法通过locality获得,只能通过获取省份的方法来获得(如果city为空,则可知为直辖市)

city = placemark.administrativeArea;

}

NSLog(@"city%@",city);

}

else if (error == nil && [array count] == 0)

{

NSLog(@"No results were returned.");

}

else if (error != nil)

{

NSLog(@"An error occurred = %@", error);

}

}];

[manager stopUpdatingLocation];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容