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>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、首先在plist表里边添加Privacy - Location Usage Description和NSLoc...
    绾青丝1219阅读 4,249评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,305评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,296评论 19 139
  • 以前对杰伦的歌的喜爱程度还没那么深,听到别人空间或说说更新显示了喜爱的歌曲和正在听的音乐的杰伦其他自身没听过的歌,...
    君一阅读 1,333评论 0 0
  • 介绍了在Android Studio中配置NDK的开发环境:Android Studio NDK开发-环境配置,N...
    0xSen阅读 3,652评论 0 2

友情链接更多精彩内容