{
CLLocationManager *_locationManager;
CLGeocoder *_geocoder;
}
@protocol
CLLocationManagerDelegate
PList
<key>NSLocationAlwaysUsageDescription</key>
<string>定位請求</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>定位請求</string>
_locationManager = [[CLLocationManager alloc]init];
_geocoder = [[CLGeocoder alloc]init];
if (![CLLocationManager locationServicesEnabled]) {
NSLog(@"定位服務當前可能尚未打開,請設置打開!");
return;
}
//如果沒有授權則請求用戶授權
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined){
[_locationManager requestWhenInUseAuthorization];
}else{
//設置代理
_locationManager.delegate = self;
//設置定位精度
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
//定位頻率,每隔多少米定位一次
CLLocationDistance distance=10.0;//十米定位一次
_locationManager.distanceFilter=distance;
[_locationManager startUpdatingLocation];
}
#pragma mark - CoreLocation
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *location=[locations firstObject];
CLLocationCoordinate2D coordinate=location.coordinate;
NSLog(@"經度:%f,緯度:%f,海拔:%f,航向:%f,行走速度:%f",coordinate.longitude,coordinate.latitude,location.altitude,location.course,location.speed);
[_locationManager stopUpdatingLocation];
//[self getAddressByLatitude:coordinate.latitude longitude:coordinate.longitude];
// 反向地理編碼
[_geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
CLPlacemark *placemark=[placemarks firstObject];
NSLog(@"詳細信息:%@",placemark.addressDictionary);
/*
SubLocality = 東城區,
CountryCode = CN,
Street = 鼓樓外大街,
State = 北京市,
Name = 中國北京市東城區和平里街道鼓樓外大街,
Thoroughfare = 鼓樓外大街,
FormattedAddressLines = [
中國北京市東城區和平里街道鼓樓外大街
],
Country = 中國,
City = 北京市
*/
_positioningV.place = [placemark.addressDictionary objectForKey:@"State"];
}];
}