IOS开发笔记整理49之详解定位CLLocation

 更新时间:2015年11月27日 15:14:22   作者:Mr.林的博客  
在项目功能中有一个定位CLLocation的需求,遇到了一些知识难点,经过各位大侠的帮助,问题解决,特此分享供大家学习,希望大家共同学习进步

在项目功能中有一个定位CLLocation的需求,遇到了一些知识难点,经过各位大侠的帮助,问题解决,特此分享供大家学习,希望大家共同学习进步。

一、简单说明

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获取当前连接的wifi信息

    iOS获取当前连接的wifi信息

    这篇文章主要为大家详细介绍了iOS如何获取当前连接的wifi信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • iOS开发中对文件目录的访问及管理的基本方法小结

    iOS开发中对文件目录的访问及管理的基本方法小结

    这篇文章主要介绍了iOS开发中对文件目录的访问及管理的基本方法小结,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-10-10
  • iOS左滑手势失效的解决方法

    iOS左滑手势失效的解决方法

    这篇文章主要为大家详细介绍了iOS左滑手势失效的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 检测iOS设备是否越狱的方法

    检测iOS设备是否越狱的方法

    这篇文章主要介绍了检测iOS设备是否越狱的方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-10-10
  • iOS中金额字符串格式化显示的方法示例

    iOS中金额字符串格式化显示的方法示例

    这篇文章主要给大家介绍了关于iOS中金额字符串格式化显示的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • 用iOS模拟器安装App的方法

    用iOS模拟器安装App的方法

    下面小编就为大家分享一篇用iOS模拟器安装App的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • iOS开发之UIPickerView实现城市选择器的步骤详解

    iOS开发之UIPickerView实现城市选择器的步骤详解

    这篇文章给大家介绍iOS利用控件UIPickerView实现城市选择器的效果,选择城市这一功能相信在大家日常开发的时候经常遇见,下面就来看看详细的实现过程,有需要的可以参考借鉴。
    2016-09-09
  • 在iOS10系统中微信后退无法发起ajax请求的问题解决办法

    在iOS10系统中微信后退无法发起ajax请求的问题解决办法

    这篇文章主要介绍了在iOS10系统中微信后退无法发起ajax请求的问题解决办法,一般可以通过延时发送请求解决,下面通过本文给大家分享下解决办法,需要的朋友参考下吧
    2017-01-01
  • Objective-C的NSOperation多线程类基本使用指南

    Objective-C的NSOperation多线程类基本使用指南

    这篇文章主要介绍了Objective-C的NSOperation多线程类基本使用指南,谈到了Operations的执行顺序和并发量等设置操作,需要的朋友可以参考下
    2016-02-02
  • iOS中多线程的经典崩溃总结大全

    iOS中多线程的经典崩溃总结大全

    这篇文章主要给大家介绍了关于iOS中多线程的一些经典崩溃的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12

最新评论