<p id="qitwt"></p>
      1. <object id="qitwt"><strong id="qitwt"></strong></object>
        <p id="qitwt"></p>
        <li id="qitwt"></li>
        <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
        <p id="qitwt"><label id="qitwt"></label></p>
      2. <acronym id="qitwt"></acronym>
        <p id="qitwt"></p>
        免費開源的iOS開發學習平臺

        定位服務:2-CoreLocation框架的基本使用

        本節的示例代碼,使用CoreLocation框架來獲取設備的位置信息,包括經度、緯度以及海拔高度信息。

        準備工作

        在使用CoreLocation框架之前,需要提前導入CoreLocation框架。

        在info.plist文件中,添加提示信息,用戶請求用戶授權使用設備的位置信息。

        使用Storyboard搭建如下的界面,添加三個UITextField控件,用于顯示設備當前的經度、緯度以及海拔高度,并建立UITextField控件與控制器類的連線。

        引入CoreLocation框架的頭文件,并為控制器類添加一個CLLocationManager類的屬性。

        #import <CoreLocation/CoreLocation.h>
        @interface ViewController () <CLLocationManagerDelegate>
        @property (weak, nonatomic) IBOutlet UITextField *lngTextField;
        @property (weak, nonatomic) IBOutlet UITextField *latTextField;
        @property (weak, nonatomic) IBOutlet UITextField *heightTextField;
        @property (nonatomic, strong) CLLocationManager *locationManager;
        @end
        

        實例化CLLocationManager對象

        在locationManager屬性的getter方法中,設置其相關屬性。

        - (CLLocationManager *)locationManager{
            if (_locationManager == nil) {
                _locationManager = [[CLLocationManager alloc] init];
                _locationManager.desiredAccuracy = kCLLocationAccuracyBest;//精度設置
                _locationManager.distanceFilter = 1000.0f;//設備移動后獲得位置信息的最小距離
                _locationManager.delegate = self;
                [_locationManager requestWhenInUseAuthorization];//彈出用戶授權對話框,使用程序期間授權
            }
            return _locationManager;
        }
        

        在viewDidAppear:方法中開始定位。

        - (void)viewDidAppear:(BOOL)animated {
            [super viewDidAppear:animated];
            [self.locationManager startUpdatingLocation];
        }
        

        控制器視圖消失時,停止定位。

        - (void)viewDidDisappear:(BOOL)animated {
            [super viewDidDisappear:animated];
            [self.locationManager stopUpdatingLocation];
        }
        

        CLLocationManagerDelegate代理方法的實現

        在CLLocationManagerDelegate代理方法中,我們可以獲取到當前的定位信息,因此,我們可以從locationManager屬性中取出當前的位置信息,并更新到界面的UITextField中。

        - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
            self.lngTextField.text = [NSString stringWithFormat:@"%3.5f",self.locationManager.location.coordinate.longitude];//獲取經度
            self.latTextField.text = [NSString stringWithFormat:@"%3.5f",self.locationManager.location.coordinate.latitude];//獲取緯度
            self.heightTextField.text = [NSString stringWithFormat:@"%3.5f",self.locationManager.location.altitude];//獲取高度
        }
        

        當定位失敗時,可以打印出定位失敗的原因。

        - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
            NSLog(@"%@",error);
        }
        

        運行程序后,系統會首先給用戶請求提示,然后顯示當前的位置信息。

        示例代碼

        https://github.com/99ios/17.2.2


        青青草国产成人久久_jizzjizz日本护士高清_亚洲 另类 国产 另类_99久久免费精品色老
        <p id="qitwt"></p>
          1. <object id="qitwt"><strong id="qitwt"></strong></object>
            <p id="qitwt"></p>
            <li id="qitwt"></li>
            <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
            <p id="qitwt"><label id="qitwt"></label></p>
          2. <acronym id="qitwt"></acronym>
            <p id="qitwt"></p>