你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS開辟筆記整頓49之詳解定位CLLocation

IOS開辟筆記整頓49之詳解定位CLLocation

編輯:IOS開發綜合

在項目功效中有一個定位CLLocation的需求,碰到了一些常識難點,經由列位年夜俠的贊助,成績處理,特此分享供年夜家進修,願望年夜家配合進修提高。

1、簡略解釋

1.CLLocationManager

CLLocationManager的經常使用操作和屬性

開端用戶定位- (void)startUpdatingLocation;

停滯用戶定位- (void) stopUpdatingLocation;

解釋:當挪用了startUpdatingLocation辦法後,就開端赓續地定位用戶的地位,半途會頻仍地挪用署理的上面辦法

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

每隔若干米定位一次

  @property(assign, nonatomic) CLLocationDistance distanceFilter;

定位准確度(越准確就越耗電)

  @property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;

應用定位功效,起首要導入框架,遵照CLLocationManagerDelegate協定,再創立地位治理器CLLocationManager

在IOS8.0後,定位功效須要在info.plist中參加NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription這兩個NSString類型字段,能力夠應用定位功效

代碼貼出來與年夜家共勉,列位看官自行研討

{
  self.locationManager = [[CLLocationManager alloc] init];
  _locationManager.delegate = self;
  if([CLLocationManager locationServicesEnabled] == NO) {
   //  NSLog(@"沒有GPS辦事");
  }
  //地輿地位准確度
  _locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters;
  //設置間隔挑選器,double類型,只需間隔變更若干,就挪用拜托署理
  self.locationManager.distanceFilter = kCLDistanceFilterNone; // meters
  [_locationManager requestWhenInUseAuthorization];// 前台定位
  [_locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager
   didUpdateLocations:(NSArray *)locations
{
  NSLog(@"longitude = %f", ((CLLocation *)[locations
                       lastObject]).coordinate.longitude);
  NSLog(@"latitude = %f", ((CLLocation *)[locations lastObject]).coordinate.latitude);
    CGFloat longTI=((CLLocation *)[locations
                    lastObject]).coordinate.longitude;
    CGFloat latTI=((CLLocation *)[locations lastObject]).coordinate.latitude;
    //將經度顯示到label上
    _longitudeLabel.text = [NSString stringWithFormat:@"%f",longTI];
    //將緯度實際到label上
    _latitudeLabel.text = [NSString stringWithFormat:@"%f",latTI];
  // 獲得以後地點的城市名
  CLGeocoder *geocoder = [[CLGeocoder alloc] init];
  //依據經緯度反向地輿編譯出地址信息
  [geocoder reverseGeocodeLocation:locations.lastObject completionHandler:^(NSArray *array, NSError *error)
   {
     if (array.count > 0)
     {
       CLPlacemark *placemark = [array objectAtIndex:0];
//       //將取得的一切信息顯示到label上
//       self.location.text = placemark.name;
       //獲得城市
       NSString *city = placemark.locality;
       if (!city) {
         //四年夜直轄市的城市信息沒法經由過程locality取得,只能經由過程獲得省分的辦法來取得(假如city為空,則可知為直轄市)
         city = placemark.administrativeArea;
       }
      // NSLog(@"city = %@", city);
       _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];
}

以上是關於本站小編給年夜家整頓的IOS開辟之詳解定位CLLocation,後續還會連續更新,願望年夜家可以或許愛好。

【IOS開辟筆記整頓49之詳解定位CLLocation】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

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