[摘要]本文是對iOS定位 - 普通定位(沒有地圖) - 反地理編碼(得到具體位置)的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。
#import <CoreLocation/CoreLocation.h> 使用到的頭文件 要引入CoreLocation這個包
<CLLocationManagerDelegate> 使用的代理名稱
//1.使用定位服務
//設置app有訪問定位服務的權限
//在使用應用期間 / 始終(app在後台)
//info.plist文件添加以下兩條(或者其中一條):
//NSLocationWhenInUseUsageDescription 在使用應用期間
//NSLocationAlwaysUsageDescription 始終
//2.LocationManager 對象管理相關的定位服務
_manager = [[CLLocationManager alloc] init];
//manager判斷: 手機是否開啟定位 / app是否有訪問定位的權限
//[CLLocationManager locationServicesEnabled]; //手機是否開啟定位
//[CLLocationManager authorizationStatus]; //app訪問定位的權限的狀態
if (![CLLocationManager locationServicesEnabled] || [CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedWhenInUse) {
[_manager requestWhenInUseAuthorization]; //向用戶請求訪問定位服務的權限
}
_manager.delegate = self;
_manager.desiredAccuracy = kCLLocationAccuracyBest;
_manager.distanceFilter = 1.0f;
[_manager startUpdatingLocation];
//定位代理經緯度回調
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
[_manager stopUpdatingLocation];
CLGeocoder * geoCoder = [[CLGeocoder alloc] init];
[geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {
for (CLPlacemark * placemark in placemarks) {
NSDictionary *test = [placemark addressDictionary];
// Country(國家) State(城市) SubLocality(區) Name全稱
NSLog(@"%@", [test objectForKey:@"Name"]);
}
}];
}