ios8之后调用系统定位

做的app需要定位城市的功能,在网上看了一堆,不是太详细,研究半天终于搞定,分享给他家

如上图,首先得在plist文件中配置权限(ios8下这是必须实现的)

为plist文件添加key

NSLocationWhenInUseDescription,允许在前台获取GPS的描述
NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述

最后是代码的实现

/**

 *  获取当前城市位置

 */

- (void)getCurrentCity

{

    if ([CLLocationManager locationServicesEnabled]) {

        if (!self.cllManager) {

            self.cllManager = [[CLLocationManager alloc]init];

        }

        self.cllManager.delegate = self;

        self.cllManager.distanceFilter = 1.0;

        self.cllManager.desiredAccuracy = kCLLocationAccuracyBest;

        

        if ([self.cllManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {

            [self.cllManager requestAlwaysAuthorization];//永久授权;

            //[self.cllManager requestWhenInUseAuthorization];//使用中授权;

        }

        [self.cllManager startUpdatingLocation];//开启位置更新;

        self.cllManager.delegate = self;

        

    }

    

}

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

{

    CLLocation *location=[locations firstObject];//取出第一个位置

    CLLocationCoordinate2D coordinate=location.coordinate;//位置坐标

    NSLog(@"经度:%f,纬度:%f,海拔:%f,航向:%f,行走速度:%f",coordinate.longitude,coordinate.latitude,location.altitude,location.course,location.speed);

    

    //获取当前所在的城市名;

    CLGeocoder * geocoder = [[CLGeocoder alloc]init];

    //根据经纬度反向地理编译出地址信息;

    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {

        if (placemarks.count > 0) {

            CLPlacemark * placemark = placemarks[0];

            //NSLog(@"%@",placemark.name);

            //获取城市

            NSString * city = placemark.locality;

            if (!city) {

                //四大直辖市无法通过locality获得,只能通过省份方法获取

                city = placemark.administrativeArea;

            }

            NSLog(@"city == %@",city);

            [barBtn setTitle:[city substringToIndex:3] forState:UIControlStateNormal];

        }else if (error == nil && placemarks.count == 0){

            NSLog(@"无返回");

 

        }else if (error != nil){

            NSLog(@"error == %@",error);

        }

    }];

    

    //如果不需要实时定位,使用完即使关闭定位服务

    [_cllManager stopUpdatingLocation];

    

    

}


总结:这个定位的实现跟大家分享的原因就是,如果单纯的实现了方法,定位的代理方法是不会实现的,必须要配置plist文件.










资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值