百度地图API后台持续定位、指南针改变位置问题
最近的需要用到后台持续定位,项目中又是用的百度地图API,遇到点麻烦:
1、进入后台,手机静置,定位持续16分钟左右就停止了,但是还是无限后台效果;但如果一直运动,让定位持续更新,定位服务一直保持
其实是API中的自动暂停定位属性 默认是true,设置为false,就不会自动关闭了
_locService = BMKLocationService()
_locService!.delegate = self
// 允许后台定位 打开
_locService!.allowsBackgroundLocationUpdates = true
// 自动暂停定位 关闭
_locService!.pausesLocationUpdatesAutomatically = false
//启动LocationService
_locService!.startUserLocationService()
记得设置Background Modes:
下面是AppDelegate中进入后台后的处理办法:
func applicationDidEnterBackground(application: UIApplication) {print("进入后台---持续定位")let application = UIApplication.sharedApplication()// 设置后台后,600s内触发至少一次的方法let shouldRestartLoc = application.setKeepAliveTimeout(600, handler: {self.backgroundHandler()})if shouldRestartLoc {print("backgrouding accepted")}else {backgroundHandler()}}func backgroundHandler() {let application = UIApplication.sharedApplication()bgTask = application.beginBackgroundTaskWithExpirationHandler {if(self.bgTask != UIBackgroundTaskInvalid){self.bgTask = UIBackgroundTaskInvalid;}} dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {while (true) {// 发送通知,重开locationService定位服务let noticeCenter = NSNotificationCenter.defaultCenter()noticeCenter.postNotificationName("restartLocationService", object: self, userInfo: nil)print("剩余时间:\(application.backgroundTimeRemaining)")sleep(5)}}}
在适当的地方注册通知,实现通知触发的方法即可,在方法中再次开始定位即可
// 注册通知
let notice = NSNotificationCenter.defaultCenter()
notice.addObserver(self, selector: #selector(restartLocationService), name: "restartLocationService", object: nil)
-----------------------------------------------------
// 重新定位
func restartLocationService() {
_locService!.startUserLocationService()
_locService!.allowsBackgroundLocationUpdates = true
_locService!.pausesLocationUpdatesAutomatically = false
}
2、地图图层上的指南针如何移动位置:
虽然API中明确了属性compassPosition来修改位置,但是如果不注意视图的load顺序,修改是无效的。所以注意:需要在mapViewDidFinishLoading之后,再去修改位置,才能生效。
func mapViewDidFinishLoading(mapView: BMKMapView!) {_mapView!.compassPosition = CGPointMake(10,5) // 设置指南针位置
}
百度地图API后台持续定位、指南针改变位置问题相关推荐
- 使用百度地图api模拟实时定位页面 完整示例
使用百度地图api模拟实时定位页面 完整示例 效果:使用百度地图api在页面上显示车辆的实时位置,并有自动刷新和手动刷新两种方式可以选择.每次刷新后,都会在地图上显示车辆的最新位置. 示例运行效果截图 ...
- HTML5+百度地图API实现地理定位
背景 如果知道用户在哪里,往往会提高很多Web应用的体验,比如为用户指明方向,对它们要去的地方给出建议,让用户知道它们所在的区域内有哪些人可能会对某个活动感兴趣等等.现在,利用HTML5(以及基于Ja ...
- php调用百度地图定位,php用百度地图API进行IP定位和GPS定位
/** * 根据地理坐标获取国家.省份.城市,及周边数据类(利用百度Geocoding API实现) * 百度密钥获取方法:http://lbsyun.baidu.com/apiconsole/key ...
- 百度地图api,第一次定位成功,后面505错误
百度地图api,第一次定位成功,后面505错误 1.查看key对不对 2.查看AndroidManifest中放的位置对不对,是放在 <application里面与 <activity a ...
- 百度地图api搜索地址定位
下载地址百度地图api地址搜索定位示例,选择公司名称地图上显示对应地址 dd:
- 百度地图API的IP定位城市和浏览器定位(转)
转自博文:百度地图API的IP定位城市和浏览器定位 http://blog.csdn.net/suixufeng/article/details/13511761 百度地图API提供了Geolocat ...
- Android 百度地图API实现实时定位
首先需要注册百度地图的开发者账号,选择个人开发者就可以.百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com) 然后获取AK这个在网上都有可以自己查看.下载.配置sdk可以 ...
- 百度地图API搜索关键词定位,点击获取经纬度
一.实现效果如下 二.获取百度地图秘钥AK (1)申请秘钥地址 http://lbsyun.baidu.com/apiconsole/key (2)创建应用 (3)选择应用类型 我这个demo是在浏览 ...
- 百度地图api实现的定位,导航,附近搜索
先上效果图:<我的位置图标下载:http://www.zhouyfei.xin/mapImage/myload.gif> 这个图标非常好用,是找的:http://www.cnblogs.c ...
最新文章
- 串联NSOperation知识点
- js小球与边框碰撞反弹_四叉树在碰撞检测中的应用
- OpenGL之glMatrixMode函数的用法
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责...
- “BindingNavigator”如何在删除前弹出确认框?
- validate插件使用remote做数据唯一性校验
- 拓端tecdat|R语言实现LDA主题模型分析网购数据
- complie myplayer on svn source code
- python办公自动化(十一)自动分类文件夹
- 使用win32com来实现outlook的自动发送
- error: C1083: 无法打开包括文件: “QString”: No such error: ‘QDir‘ file not found
- Kubernetes Dashboard 设置用户密码登陆
- java实验3_Java实验3
- javaweb常识类英语
- 什么是网络爬虫以及通用爬虫和聚焦爬虫的介绍
- 表单设计器—HTML元素操作
- WordPress获取文章缩略图函数:get_the_post_thumbnail
- C语言将一字符串输入到数组(长度不超过80)后将其输出, 将其中的英文字母大小写互换后再将整个字符串输出。
- [Swift]Set(集)转换为Array(数组)
- iOS 调用打印机