如何实现定位.

1. 授权

2. 开始更新用户位置

2.1 代理回调方法处理数据

3. 错误处理情况

从iOS6开始, 要得到授权 (会弹出窗口, 用到了相关功能会自动)

从iOS8开始, 要得到授权, 需要主动的调用代码来请求授权

#import "ViewController.h"

#import <CoreLocation/CoreLocation.h>

@interface ViewController () <CLLocationManagerDelegate>

授权, 定位相关

@property (strong, nonatomic) CLLocationManager *manager;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// --------1. 授权 (Authorization) --------

// 1. 判断当前的授权状态

// 如果还没有做出决定, 要请求授权 (通常只会执行)

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {

// 请求授权, 后台也可用

// 注意: 要配置Info.plist文件

///////由于网络问题,plist文件配置图片上传不了,后续会补上??

// 注意: 这个Key值, 一定不能有空格!

[self.manager requestAlwaysAuthorization];

}

// --------2. 定位 (Location) --------

// 开始更新用户位置的数据, 通过代理回调数据

[self.manager startUpdatingLocation];

}

#pragma mark - CLLocationManagerDelegate

// 当授权状态改变后触发

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status

{

// -------- 根据状态作出操作 --------

// 1. 授权成功处理

if (status == kCLAuthorizationStatusAuthorizedAlways) {

NSLog(@"授权成功");

}

// 2. 授权失败处理, 提示用户.....

}

//- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

// 当位置信息更新后触发

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

{

// locations包含位置信息, 至少有一个location, 表示的是当前位置

// 如果是延迟模式, 有多个值同时到达, 那么该数组有多个值

// 当前的最新位置, 是数组的最后一个元素

// CLLocation 表示位置(经纬度-地理坐标)的相关信息, 带有时间, 精确度等信息

//    NSLog(@"%@", locations);

// 最前的位置信息是数组的最后一个元素

CLLocation *currentLocation = locations.lastObject;

// CLLocationCoordinate2D 表示经纬度的结构体, 单位是Double

CLLocationCoordinate2D coordinate = currentLocation.coordinate;

// 获取到当前位置是的时间

NSDate *date = currentLocation.timestamp;

NSLog(@"%f, %f, %@", coordinate.latitude, coordinate.longitude, date);

}

// 遇到错误情况, 失败时触发

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

{

// 错误信息定义在CLError.h文件中

NSLog(@"%@", error);

switch (error.code) {

case kCLErrorDenied: {

NSLog(@"因为没有得到授权");

}

case kCLErrorNetwork: {

NSLog(@"因为网络问题导致的错误");

}

case kCLErrorLocationUnknown: {

NSLog(@"当前的位置未知, 会继续尝试");

* 如果是模拟器, 报了kCLErrorLocationUnknown错误, 是模拟器的问题.

此时不是代码问题

1. 删掉App重新运行

2. 换一个模拟器

3. 重置模拟器

}

break;

default:

break;

}

}

#pragma mark - Getter & Setter

- (CLLocationManager *)manager

{

if (_manager == nil) {

_manager = [CLLocationManager new];

// 通过代理回调数据

_manager.delegate = self;

}

return _manager;

}

@end

时间: 2024-11-18 02:42:46

如何实现定位.的相关文章

微信实现定位城市并获取城市编码

最近在做一个项目是将用户的当前所在市县定位出来并展示在手机端页面,同时还要获取到该市县的城市编码从而进行数据过滤,这里重点讲定位城市及获取城市编码 前端页面代码: 首先引用腾讯地图的一个js <script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js" ></script> 同时在页面加载

div与 css--绝对定位和相对定位

<10-页面美化专题-div和css基础.avi> Border-topPadding-topMargin-topFloat Position #clear{Both:clear;}//浮动 float为了不影响后面的 语句#son2{position:relative; //没有脱离文档流left:60%;} position :absolute;left:0px;绝对定位 就脱离了文档 子的绝对定位:要看爸爸是否有相对定位:如果有就相对爸爸的边框,如果没有就相对浏览器的定位了:

copyright底部栏定位css样式(min-height)

关于底部版权栏定位的一点点小技巧,让其一直处于页面的最底部. html代码: css代码: reset代码,清除浏览器留下的margin和padding: 设置html,body的高度100%: 通过top的min-height和底部栏的height和margin-top来完成布局:

“黑五”的本土化难题,如何定位、立足?

黑五,或者黑色星期五,对大部分中国人来说都会觉得很陌生,但这个在欧美如同双十一的购物节日已经开始被一部分中国消费者所接受并且积极的进行消费购物.虽然在国内黑五还无法与双十一相提并论,但随着跨境电商的兴起,黑五的本土化氛围正越来越浓. "黑五"关注度持续升温 从特定人群向多元化.年轻化转变 从市场层面的变化来看,这两年跨境电商的持续发展为黑五提供了基本的市场促销环境,虽然国内的黑五发展程度尚不足以与双十一相提并论,但对跨境电商企业而言,这几年已经逐渐向市场传达到了"黑五&quo

Android附近基站+Wifi+IP+GPS多渠道定位方案

前言: 在移动客户端的开发中,地理位置定位是一个非常重要的环节,有些时候用户可能会限制web app或者Android app的一些权限,或者由于信号不佳的原因无法获得准确的GPS位置,甚至为了省电,用户可能对开启GPS开关可能会有抵触情绪.但是不能因为GPS的种种限制就放弃了对用户位置的追踪.要通过一切能发送出信号的物体尽可能准确的获取到用户的位置,有时可以牺牲一些精度,对于大数据和用户地区分布分析来说,有一个大体的位置已经够分析人员使用,而且绕开GPS的重重壁垒,为数据的完整性提供可靠方案

学习总结HTML5- 03 地理定位

百度地图-开发者中心http://developer.baidu.com/map/index.html 百度地图-坐标拾取http://api.map.baidu.com/lbsapi/getpoint/index.html 百度地图-覆盖物http://developer.baidu.com/map/jsdemo.htm 百度地图-GPShttp://developer.baidu.com/map/jsdemo.htm#c2_5 百度地图- IP 定位http://developer.baid

移动端报表JS开发示例--获取定位

上次分享了移动端报表JS开发的系统概念,后来我又回去摸索了一些案例.之前接触到的FineReport的APP客户端可以用来打卡签到,就好奇研究了以下,这次就来聊一聊报表移动端开发如何实现定位功能. 1. 解决思路 在用FineReport设计模板的时候添加一个按钮控件,点击该按钮的时候,获取当前地理位置,并将该位置信息复制给某个单元格,最后在客户端填报当前模板即可. 2. 示例 实现如下图所示效果,点击地理位置按钮获取当前位置与当前时间,并显示在下方对应的单元格中: 2.1 模板制作 打开设计器

iOS iOS9.0 的CoreLocation定位

一.简介 iOS9.0如果当前处于前台授权状态,默认是不可以后台获取用户位置. 如果在前台授权下,让其能获取到后台定位,该怎么办 可以设置以下属性为YES,就可以继续获取后台位置,但是会出现蓝条 使用注意:必须设置对应的后台模式,勾选后台模式:location updates @property(assign,nonatomic) BOOL allowsBackgroundLocationUpdates 注意:iOS9.0 可以单次请求用户位置 - (void)requestLocation /

2016.3.14__CSS 定位__第六天

CSS定位 CSS 定位机制 CSS中一共有三种基本定位机制:普通流.浮动.绝对定位. 如果不进行专门指定,所有的标签都在普通流中定位. 块级元素从上到下一个接一个的排列,框之间的垂直距离是由框的垂直外边距计算出来. 行内框在一行中水平布置.可以使用水平内边距.边框和外边距来调整它们之间的间距. position属性 通过position属性,我们可以选择4种不同类型的定位,这会影响元素框生成的方式. 包括4个属性值:static.relative.absolute.fixed static :

CSS权威指南 - 浮动和定位

定位 定位的想法很简单元素框相对于正常位置出现在哪里. 定位:static,相对, 绝对, fixed, 继承 static就是默认的位置 相对就是相对于默认位置的偏移.原来的static定位位置依然占着. 绝对定位相对于包含块(非static的)的偏移.完全脱离文档流,原来的位置就没了. fix相对于viewport视窗的偏移. 包含块 根元素是初始包含块,有的浏览器是html元素,有的为body. 非根元素,position为相对或者默认位置,包含块是最近祖先级的块级框.表格单元.行内块.