当前位置: 首页 > news >正文

使用系统的CoreLocation定位

//
//  ViewController.m
//  LBS
//
//  Created by tonnyhuang on 15/8/28.
//  Copyright (c) 2015tonnyhuang. All rights reserved.
//

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

//首先,我们需要在工程中导入CoreLocation系统框架。然后在我们的控制器中引入头文件。
//然后,声明一个CLLocationManager对象作为成员变量,用于定位获取经纬度坐标,并遵守协议CLLocationManager的协议。
@interface ViewController ()<CLLocationManagerDelegate>
{
    CLLocationManager *_locationManager;
}

@end

@implementation ViewController



//实现其中的代理方法
#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation {
    //获取经度
    NSLog(@"经度 == %lf", newLocation.coordinate.longitude);
    //获取纬度
    NSLog(@"纬度 == %lf", newLocation.coordinate.latitude);
    //获取当前所在的城市名
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    //根据经纬度反向地理编码出地址信息
    [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {
        CLPlacemark *placemark = [placemarks objectAtIndex:0];
        NSLog(@"%@", placemark.name);
        //获取城市
        NSString *city = placemark.locality;
       
        //四大直辖市的城市信息无法通过locality获得,只能通过获取省份的方法来获得(如果city为空,则可知为直辖市
       
        if (!city) {
            city = placemark.administrativeArea;
        } else if (error == nil && [placemarks count] == 0){
            NSLog(@"no result were returned");
        } else if (error != nil) {
            NSLog(@"error = %@", error);
        }
        NSLog(@"city = %@", city);
    }];
    //系统会一直更新数据,直到选择停止更新,因为我们只需要获得一次经纬度即可,所以获取之后就停止更新
}



//最后在viewDidLoad中初始化定位管理器。
- (void)viewDidLoad {
    [super viewDidLoad];
    [self initializeLocationService];
}

- (void)initializeLocationService {
    //初始化定位管理器
    _locationManager = [[CLLocationManager alloc] init];
    //设置代理
    _locationManager.delegate = self;
    //设置定位精确度到米     _locationManager.desiredAccuracy = kCLLocationAccuracyBest;     //设置过滤器为无     _locationManager.distanceFilter = kCLDistanceFilterNone;     //开始定位     [_locationManager requestAlwaysAuthorization];     //取得定位权限,有两个方法,取决于你的定位使用情况     [_locationManager startUpdatingLocation]; } //如果需要正常定位,相对iOS7而言,iOS8需要额外处理两个地方。//1. 工程的plist文件里面添加两个字段:NSLocationAlwaysUsageDescription,
//NSLocationWhenInUseUsageDescriptiontype类型均为string,值可以根据你的需要填写(也可以不填),填写的内容会展示在APP提示用户是否允许定位的alert内容里面,具体效果可以自行测试,这里就不额外截图。
 
这儿的位置不要错误  在上边的info.plist中添加字段
 

 
//2. 调用定位方法之前需要额外调用一个函数,直接在上面iOS7初始化定位服务的方法里面修改即可,具体如下:

// 开始定位
// 取得定位权限,有两个方法,取决于你的定位使用情况
// 一个是requestAlwaysAuthorization,一个是requestWhenInUseAuthorization
//[_locationManager requestAlwaysAuthorization];//这句话ios8以上版本使用。
//[_locationManager startUpdatingLocation];


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

转载于:https://www.cnblogs.com/tian-sun/p/4849794.html

相关文章:

  • 小程序跳转:云开发H5跳转小程序的坑,微信可跳,H5无法跳
  • FLAG是什么公司
  • 小程序跳转:h5避免中间页直接打开微信小程序
  • 安装windows后grub的恢复
  • uniapp开发:uniapp之切换vue3,一直使用一直爽
  • uniapp开发:uniapp之vue2、vue3运行至h5请求跨域配置
  • PHP从零开始-笔记-面向对象编程的概念
  • 运行环境之小程序环境判断与h5等多平台环境区分汇总
  • Git 简易手册
  • css样式:单行与多行文本溢出显示省略号
  • 启动图制作:Android Studio制作.9.png图亲测详细流程之每步图解
  • Android相机使用(系统相机、自定义相机、大图片处理)
  • vue3.2开发:vuex在vue3与vue2中异同之快速体验
  • uniapp开发:uniapp快速体验vue3.2之setup语法糖,怎么使用怎么爽
  • 解决显示“此图片来自微信公众平台未经允许不可引用”错误图片
  • C++入门教程(10):for 语句
  • Java 23种设计模式 之单例模式 7种实现方式
  • OSS Web直传 (文件图片)
  • redis学习笔记(三):列表、集合、有序集合
  • ucore操作系统实验笔记 - 重新理解中断
  • VUE es6技巧写法(持续更新中~~~)
  • vue 配置sass、scss全局变量
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 安卓应用性能调试和优化经验分享
  • 搭建gitbook 和 访问权限认证
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用权重正则化较少模型过拟合
  • 推荐一个React的管理后台框架
  • 追踪解析 FutureTask 源码
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2)Java 简介
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)Sublime Text3配置Lua运行环境
  • .htaccess配置常用技巧
  • .NET Core 2.1路线图
  • .NET Core WebAPI中封装Swagger配置
  • .net 调用php,php 调用.net com组件 --
  • .net打印*三角形
  • .net和php怎么连接,php和apache之间如何连接
  • @javax.ws.rs Webservice注解
  • [100天算法】-不同路径 III(day 73)
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [Android 13]Input系列--获取触摸窗口
  • [Android] 240204批量生成联系人,短信,通话记录的APK