iOS --- 定位

常用的类

CLLocationManager:定位服务管理类,开启/关闭定位服务,配置定位精度,距离等等。

CLGeocoder:地理位置编码类, 根据经纬度获取地理位置信息,根据地名获取位置信息。

CLLocation:地理位置信息类,经纬度、海拔、速度、时间、国家等相关位置信息。

CLLocationCoordinate2D:结构体只包含经纬度信息。

需要遵守CLLocationManagerDeletage

可参见帮助文档获取更多信息

iOS8定位服务设置

设置info.plist文件增加:

NSLocationAlwaysUsageDescription, 允许获取地理位置描述

NSLocationWhenInUseDescription, 允许获取地理位置描述

1

2

iOS --- 定位_第1张图片

请求位置授权

[_locationMananer requestAlwaysAuthorization];

1

遵守协议

_locationManger.delegate=self

1

实现协议相关方法。

//定位信息获取后调用的方法-(void)locationManager:didUpdateLocations:

1

2

启动定位服务

_locationManager startUpatingLocation];

1

停止定位服务

locationManager stopUpatingLocation];

1

#import"ViewController.h"@import CoreLocation;@interfaceViewController() @property(strong,nonatomic) CLLocationManager *locationManager;@end@implementationViewController- (void)viewDidLoad {

[superviewDidLoad];

_locationManager = [[CLLocationManager alloc] init];

_locationManager.delegate=self;//请求授权[_locationManager requestAlwaysAuthorization];//定位精度_locationManager.desiredAccuracy= kCLLocationAccuracyNearestTenMeters;//发生事件的最小距离间隔_locationManager.distanceFilter=1000.0f;

[_locationManager startUpdatingLocation];//启动定位服务.//根据输入的位置信息进行定位,输出相应的位置信息[[[CLGeocoder alloc] init] geocodeAddressString:@"北京"completionHandler:^(NSArray * _Nullable placemarks,NSError* _Nullable error) {NSLog(@"geocode placemark count:%d", (int)placemarks.count);for(CLPlacemark *placemark in placemarks) {NSLog(@"%@\n", placemark.location);

}

}];

}#pragma mark - CLLocationManagerDelegate- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{

CLLocation *location = [locations lastObject];/*当定位成功后,如果horizontalAccuracy大于0,说明定位有效

horizontalAccuracy,该位置的纬度和经度确定的圆的中心,并且这个值表示圆的半径。负值表示该位置的纬度和经度是无效的。

*/NSLog(@"lat:%.3f, log:%.3f", location.coordinate.latitude, location.coordinate.longitude);if(location.horizontalAccuracy>0){//定位数据有效CLGeocoder *geocoder = [[CLGeocoder alloc] init];//反地理位置编码[geocoder reverseGeocodeLocation:location

completionHandler:^(NSArray * _Nullable placemarks,NSError* _Nullable error) {NSLog(@"placemark count:%d", (int)placemarks.count);for(CLPlacemark *placemark in placemarks) {NSLog(@"%@", placemark.addressDictionary);

}

}];

[manager stopUpdatingLocation];//结束定位服务}

}

你可能感兴趣的:(iOS --- 定位)