iOS-定位當前城市

1.導入框架

<pre>

import <CoreLocation/CoreLocation.h>

</pre>

2.定義對象

<pre>
@property(nonatomic,strong)CLLocationManager *locationManager;
</pre>

3.開始定位

<pre>
//定位服務
-(void)LocationService
{

if ([CLLocationManager locationServicesEnabled]) {
    // 初始化定位管理器
    self.locationManager=[[CLLocationManager alloc]init];
    self.locationManager.delegate=self;
    // 設置定位精確度到千米
    self.locationManager.desiredAccuracy=kCLLocationAccuracyKilometer;
    // 設置過濾器為無
    self.locationManager.distanceFilter=kCLDistanceFilterNone;
    //這句話ios8以上版本使用
    [ self.locationManager requestAlwaysAuthorization];
    //開始定位
    [ self.locationManager startUpdatingLocation];
} else {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"無法定位" message:@"請檢查你的設備是否開啟定位功能" delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
    [alert show];
}

}
</pre>

4.代理方法

<pre>

pragma mark--定位代理

  • (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
    {

    // 獲取當前所在的城市名
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    //根據經緯度反向地理編譯出地址信息
    [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray*array, NSError *error){
    if (array.count > 0){
    CLPlacemark *placemark = [array objectAtIndex:0];

          //獲取城市
          NSString \*city = placemark.locality;
          if (!city) {
              //四大直轄市的城市信息無法通過locality獲得,只能通過獲取省份的方法來獲得(如果city為空,則可知為直轄市)
              city = placemark.administrativeArea;
          }
          NSLog(@"city = %@", city);
          self.cityLabel.text=city;
    

//
}
else if (error == nil && [array count] == 0)
{
NSLog(@"No results were returned.");
}
else if (error != nil)
{
NSLog(@"An error occurred = %@", error);
}
}];
//系統會一直更新數據,直到選擇停止更新,因為我們只需要獲得一次經緯度即可,所以獲取之后就停止更新
[manager stopUpdatingLocation];
}
</pre>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1、首先在plist表里邊添加Privacy - Location Usage Description和NSLoc...
    綰青絲1219閱讀 844評論 0 3
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,067評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,868評論 18 139
  • 以前對杰倫的歌的喜愛程度還沒那么深,聽到別人空間或說說更新顯示了喜愛的歌曲和正在聽的音樂的杰倫其他自身沒聽過的歌,...
    君一閱讀 166評論 0 0
  • 介紹了在Android Studio中配置NDK的開發環境:Android Studio NDK開發-環境配置,N...
    姜家志閱讀 575評論 0 2