高德sdk定位当前位置_单次定位-获取位置-开发指南-iOS 定位SDK | 高德地图API
iOS定位SDK提供的单次定位方法基于苹果定位核心,苹果定位核心会在设备移动时连续返回定位结果,高德在此基础上封装了单次定位。当设备可以正常联网时,还可以返回该定位点的对应的中国境内位置信息(包括:省、市、区/县以及详细地址)。
第 1 步,引入头文件
在调用定位功能的类中引入AMapFoundationKit.h和AMapLocationKit.h这两个头文件,注意Swift需要在桥接文件中引入头文件:
#import
#import
//在桥接文件中引入头文件
#import
#import
第 2 步,配置Key
在调用定位时,需要添加Key,需要注意的是请在 SDK 任何类的初始化以及方法调用之前设置正确的 Key。
如果您使用的是定位SDK v2.x版本需要引入基础 SDK AMapLocationKit.framework ,设置apiKey的方式如下:
iOS 定位SDK v2.x版本设置 Key:
[AMapServices sharedServices].apiKey =@"您的key";
AMapServices.shared().apiKey = "您的key"
如果您使用的是定位SDK v1.x版本,请您尽快更新。
iOS 定位SDK v1.x版本设置 Key:
[AMapLocationServices sharedServices].apiKey =@"您的key";
AMapLocationServices.shared().apiKey = "您的key"
第 3 步,设置期望定位精度
由于苹果系统的首次定位结果为粗定位,其可能无法满足需要高精度定位的场景。
所以,高德提供了 kCLLocationAccuracyBest 参数,设置该参数可以获取到精度在10m左右的定位结果,但是相应的需要付出比较长的时间(10s左右),越高的精度需要持续定位时间越长。
推荐:kCLLocationAccuracyHundredMeters,一次还不错的定位,偏差在百米左右,超时时间设置在2s-3s左右即可。
// 带逆地理信息的一次定位(返回坐标和地址信息)
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyHundredMeters];
// 定位超时时间,最低2s,此处设置为2s
self.locationManager.locationTimeout =2;
// 逆地理请求超时时间,最低2s,此处设置为2s
self.locationManager.reGeocodeTimeout = 2;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
locationManager.locationTimeout = 2
locationManager.reGeocodeTimeout = 2
高精度:kCLLocationAccuracyBest,可以获取精度很高的一次定位,偏差在十米左右,超时时间请设置到10s,如果到达10s时没有获取到足够精度的定位结果,会回调当前精度最高的结果。
// 带逆地理信息的一次定位(返回坐标和地址信息)
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
// 定位超时时间,最低2s,此处设置为10s
self.locationManager.locationTimeout =10;
// 逆地理请求超时时间,最低2s,此处设置为10s
self.locationManager.reGeocodeTimeout = 10;
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.locationTimeout = 10
locationManager.reGeocodeTimeout = 10
其余精度阈值您可以通过查看参考手册得到。
第 4 步,请求定位并拿到结果
调用 AMapLocationManager 的 requestLocationWithReGeocode:completionBlock: 方法,请求一次定位。
您可以选择在一次定位时是否返回地址信息(需要联网)。以下是请求带逆地理信息的一次定位,代码如下:
// 带逆地理(返回坐标和地址信息)。将下面代码中的 YES 改成 NO ,则不会返回地址信息。
[self.locationManager requestLocationWithReGeocode:YES completionBlock:^(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error) {
if (error)
{
NSLog(@"locError:{%ld - %@};", (long)error.code, error.localizedDescription);
if (error.code == AMapLocationErrorLocateFailed)
{
return;
}
}
NSLog(@"location:%@", location);
if (regeocode)
{
NSLog(@"reGeocode:%@", regeocode);
}
}];
locationManager.requestLocation(withReGeocode: false, completionBlock: { [weak self] (location: CLLocation?, reGeocode: AMapLocationReGeocode?, error: Error?) in
if let error = error {
let error = error as NSError
if error.code == AMapLocationErrorCode.locateFailed.rawValue {
//定位错误:此时location和regeocode没有返回值,不进行annotation的添加
NSLog("定位错误:{\(error.code) - \(error.localizedDescription)};")
return
}
else if error.code == AMapLocationErrorCode.reGeocodeFailed.rawValue
|| error.code == AMapLocationErrorCode.timeOut.rawValue
|| error.code == AMapLocationErrorCode.cannotFindHost.rawValue
|| error.code == AMapLocationErrorCode.badURL.rawValue
|| error.code == AMapLocationErrorCode.notConnectedToInternet.rawValue
|| error.code == AMapLocationErrorCode.cannotConnectToHost.rawValue {
//逆地理错误:在带逆地理的单次定位中,逆地理过程可能发生错误,此时location有返回值,regeocode无返回值,进行annotation的添加
NSLog("逆地理错误:{\(error.code) - \(error.localizedDescription)};")
}
else {
//没有错误:location有返回值,regeocode是否有返回值取决于是否进行逆地理操作,进行annotation的添加
}
}
if let location = location {
NSLog("location:%@", location)
}
if let reGeocode = reGeocode {
NSLog("reGeocode:%@", reGeocode)
}
})
高德sdk定位当前位置_单次定位-获取位置-开发指南-iOS 定位SDK | 高德地图API相关推荐
- ios 高德获取定位_单次定位-获取位置-开发指南-iOS 定位SDK | 高德地图API
iOS定位SDK提供的单次定位方法基于苹果定位核心,苹果定位核心会在设备移动时连续返回定位结果,高德在此基础上封装了单次定位.当设备可以正常联网时,还可以返回该定位点的对应的中国境内位置信息(包括:省 ...
- vue使用高德地图画电子围栏_地理围栏-辅助功能-开发指南-iOS 定位SDK | 高德地图API...
以下内容自 iOS 定位SDK V2.3.0 后支持. 第 1 步,引入头文件 在调用地理围栏功能的类中引入AMapFoundationKit.h和AMapLocationKit.h这两个头文件,注意 ...
- 设置电子围栏 高德地图_地理围栏-辅助功能-开发指南-iOS 定位SDK | 高德地图API...
以下内容自 iOS 定位SDK V2.3.0 后支持. 第 1 步,引入头文件 在调用地理围栏功能的类中引入AMapFoundationKit.h和AMapLocationKit.h这两个头文件,注意 ...
- PHP地图规划骑行路径,骑行路线规划-路线规划-开发指南-iOS 导航SDK | 高德地图API...
基本介绍 要实现骑行路径规划功能,以下三个类您需要了解:AMapNaviRideManager 是骑行导航管理类,提供路线规划.行前选路.导航中重算等方法.注意:从导航SDK7.4.0开始,AMapN ...
- 设置电子围栏 高德地图_地理围栏-辅助功能-开发指南-Android 定位SDK | 高德地图API...
以下内容自定位 SDK V3.2.0 版本后支持. 第一步,创建地理围栏 地理围栏没有最大个数限制,您可以无限制的创建围栏.但请您根据业务需求合理的创建围栏,控制围栏个数可以有效的保证程序执行效率.定 ...
- php 开发高德地图地理围栏,地理围栏-辅助功能-开发指南-Android 定位SDK | 高德地图API...
以下内容自定位 SDK V3.2.0 版本后支持. 第一步,创建地理围栏 地理围栏没有最大个数限制,您可以无限制的创建围栏.但请您根据业务需求合理的创建围栏,控制围栏个数可以有效的保证程序执行效率.定 ...
- java 高德地图错误码_错误码对照表-实用工具-开发指南-Android 地图SDK | 高德地图API...
新版响应码状态描述问题排查策略 1000请求正常服务调用正常,有结果返回 1001开发者签名未通过1.开发者在Key控制台中,开启了"数字签名"功能,但没有按照指定算法生成&quo ...
- android高德地图上加自定义菜单,自定义UI控件-UI界面定制-开发指南-Android 导航SDK | 高德地图API...
关于自定义 UI 布局,您还可以参考官方Demo--完全自定义UI导航. 单元素自定义 可以通过AMapNaviViewOptions中如下接口进行单UI元素显示隐藏,只列出部分接口,更多功能请参考A ...
- python鼠标位置_用python3 返回鼠标位置的实现方法(带界面)
点击获取后,返回2s后的鼠标位置,显示在文本框 (需要用pip命令安装所需的的库) (pip install 模块名 比如 安装pyautogui 模块 在cmd里面输入: pip install p ...
最新文章
- pandas获取dataframe数据列的数据类型、获取dataframe每类数据类型数据列的个数、使用select_dtypes函数、include参数以及exclude参数按照数据类型筛选数据
- html5 drag this,HTML5拖放(drag和drog)
- zabbix 安装使用
- c++-swap nodes in pairs
- 【专题介绍】用户网络模型与QoE
- tomcat中配置jndi数据源以便spring获取
- web开发者工具,118页Vue面试题总结,涨姿势!
- js 如何去除字符两端的引号
- Spring(一):简介
- Easy Code,IntelliJ IDEA中代码一键生成
- Button,LinkButton,ImageButton,HyperLink使用
- 美丽汤的请求 - 小甜饼豆瓣爬虫
- 芯片里面长啥样?扫描电子显微镜放大10000倍告诉你!
- 绿盟科技2019校园招聘笔试题附加题
- iOS 图片裁剪(用户头像裁剪)
- 计算机重启后一直黑屏转圈,技术员教你解决win10开机无限黑屏转圈重启的解决方法...
- 软件设计的概念与原则
- 录屏神器Bandicam 4.34.1503学习版
- java+vue+SSM215的病人跟踪治疗信息管理系统毕业设计
- Java虚拟机学习与总结(二)
热门文章
- Android驱动开发读书笔记六
- 来晚了--SALTSTACK要弄起
- Control.Invoke和Control.BeginInvoke
- VirtualBox uuid冲突问题
- ISE MAP报错: Unsupported programming for BSCAN block and JTAG_CHAIN attribute value 1的解决方法
- 云计算之路-阿里云上-幸福总是很突然:“黑色1秒”问题解决啦
- C# System.Timers.Timer中的坑,程序异常退出后timer依然运行问题
- gitlab自带的Nginx与原Nginx冲突的解决方案
- 关于解决GPS定位设备:GPS静态漂移的方法
- SQLServer中进行sql除法运算结果为小数时显示0的解决方案