你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS獲取當前城市

iOS獲取當前城市

編輯:IOS開發綜合
1.倒入頭文件

#import

2.實現定位協議CLLocationManagerDelegate

3.定義定位屬性

@property(nonatomic,retain)CLLocationManager *locationManager;

4.開始定位

- (void)locate

{

// 判斷定位操作是否被允許

if([CLLocationManager locationServicesEnabled]) {

self.locationManager = [[CLLocationManager alloc] init] ;

self.locationManager.delegate = self;

}else {

//提示用戶無法進行定位操作

UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:

@"提示" message:@"定位不成功 ,請確認開啟定位" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil];

[alertView show];

}

// 開始定位

[self.locationManager startUpdatingLocation];

}


5.實現定位協議回調方法

#pragma mark - CoreLocation Delegate

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

{

//此處locations存儲了持續更新的位置坐標值,取最後一個值為最新位置,如果不想讓其持續更新位置,則在此方法中獲取到一個值之後讓locationManager stopUpdatingLocation

CLLocation *currentLocation = [locations lastObject];

// 獲取當前所在的城市名

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

//根據經緯度反向地理編譯出地址信息

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

{

if (array.count > 0)

{

CLPlacemark *placemark = [array objectAtIndex:0];

//將獲得的所有信息顯示到label上

NSLog(@"%@",placemark.name);

//獲取城市

NSString *city = placemark.locality;

if (!city) {

//四大直轄市的城市信息無法通過locality獲得,只能通過獲取省份的方法來獲得(如果city為空,則可知為直轄市)

city = placemark.administrativeArea;

}

self.cityName = city;

}

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

{

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

}

else if (error != nil)

{

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

}

}];

//系統會一直更新數據,直到選擇停止更新,因為我們只需要獲得一次經緯度即可,所以獲取之後就停止更新

[manager stopUpdatingLocation];

}

- (void)locationManager:(CLLocationManager *)manager

didFailWithError:(NSError *)error {

if (error.code == kCLErrorDenied) {

// 提示用戶出錯原因,可按住Option鍵點擊 KCLErrorDenied的查看更多出錯信息,可打印error.code值查找原因所在

}

}



  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved