美文网首页iOS开发技巧程序员
iOS 高德地图百度地图实现后台定位

iOS 高德地图百度地图实现后台定位

作者: maker997 | 来源:发表于2018-01-06 13:12 被阅读119次

坐标体系

  • WGS84: 大地坐标系,广泛使用的 GPS 定位系统采用的坐标系.
  • GCJ02: 火星坐标系,由中国测绘局对 WGS84进行加密后得到的坐标系.
  • BD09: 百度坐标,针对火星坐标再次加密所得BD09II 位百度经纬度坐标, BD09mc 为百度墨卡托米制坐标

地图 SDK 采用哪种坐标体系

百度地图 SKD 高德地图 SKD GPS 设备(苹果,安卓手机)
WGS84
GCJ02 查看
BD09 查看

ios实现后台定位

  1. 需求: 要求定时上传用户的经纬度,无论App 在前台还是后台.

  2. 准备工作

    • info.plist 文件中添加必要字段
      • NSLocationUsageDescription已经用不到了
      • NSLocationWhenInUseUsageDescription(简单的前台定位)
      • NSLocationAlwaysUsageDescription(后台定位,要适配 iOS10之前的版本这个也要添加上)
      • NSLocationAlwaysAndWhenInUseUsageDescription(后台定位iOS10及以后)
    • 开启后台定位开关
      • TARGETS -->Capbilities -->Background Modes打开
      • 选中Location updates
  3. 编写代码参考官方

    • 创建定位管理者

      - (CLLocationManager *)locationManager
      {
          if (_locationManager == nil)
          {
          _locationManager = [[CLLocationManager alloc]init];
          _locationManager.delegate = self;
          _locationManager.distanceFilter = kCLDistanceFilterNone;
          _locationManager.allowsBackgroundLocationUpdates = YES;
          _locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
          }
          return _locationManager;
      }   
      
    • 请求授权,并开始定位

      - (void)startUpdateLocation
      {
          //请求后台定位授权
          [self.locationManager requestAlwaysAuthorization];
          dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
              [self.locationManager startUpdatingLocation];
          });
      }
      

踩坑

  1. 授权后台定位弹窗


    Simulator Screen Shot - iPhone X - 2018-01-05 at 15.51.31.png
    • 解决办法

      • requestAlwaysAuthorization之后过几秒钟后执行 startUpdatingLocation方法.
    • 踩到这个坑的原因.

      • 不知道 info.plist 文件中的几个 key 的含义
      • 不知道这个方法的含义requestAlwaysAuthorization 请求后台定位授权
      • 不知道这个方法的含义requestWhenInUseAuthorization 请求前台定位授权
      • 请求后台定位授权后,立即执行startUpdatingLocation,仅仅弹出前台授权的弹窗(这个坑找了好久好久).
  2. 蓝条出现的情况

    • 在执行后台定位,但是后台定位权限就会出现蓝条
    • 查看 APP 当前定位权限的方法
      • 设置 -->隐私 -->定位服务 -->查看自己的 APP 的授权
    • 执行的代码大于当前的授权的时就会出现蓝条
  3. 崩溃发生在 startUpdateLocation

    • TARGETS -->Capbilities -->Background Modes关闭再打开一次

坐标体系转换

  1. 网上已经有现成的轮子了坐标转换
  2. 坐标转换:
    • WGS84 <-->数学运算 <--> GCJ02 <-->数学运算 <-->BD09
  3. 放出我的 demo

相关文章

  • Android从0到完整项目(7)地图与导航

    百度地图或者高德地图 实现 与地图相关的功能 以高德地图为例,百度地图API 基本类似,看后台要求,经纬度要一致,...

  • iOS 高德地图百度地图实现后台定位

    坐标体系 WGS84: 大地坐标系,广泛使用的 GPS 定位系统采用的坐标系. GCJ02: 火星坐标系,由中国测...

  • 高德地图6.8.0定位修改的修复方法

    高德地图6.8.0或以上版本开启后台定位 问题 如果APP中使用了高德地图并且具有后台定位功能,然后在3D地图升级...

  • RN-地图导航

    调起百度网页地图路径导航 调起高德网页地图路径导航 iOS调起百度APP地图路径导航 iOS调起高德app地图路径...

  • h5调用地图功能

    h5 调起百度、高德地图定位 高德地图 百度地图 注意: 高德地图和百度地图的经纬度传值是相反着的 h5 调起高...

  • iOS 中打开外带地图进行导航

    参考资料 iOS实现应用外自带地图、高德地图、百度地图导航 检查本地的地图 app 主要对国内主流的地图进行检测 ...

  • 地图集成调研

    地图集成调研 主要地图API有百度地图、高德地图、腾讯地图、搜狗地图(android、IOS暂不开放)。 百度地图...

  • iOS 高德地图的使用

    iOS:高德地图的使用 本人花了点时间集成了高德地图的几乎所有的功能,包含:地图的显示、地图的绘制、地图的定位、地...

  • 百度地图坐标转高德地图

    百度地图坐标和高德地图坐标转换代码 Java实现 最近做项目需要百度地图坐标转换到高德地图坐标,高德官方也给出了转...

  • iOS 使用高德地图正确姿势(三)

    iOS 使用高德地图正确姿势(一)iOS 使用高德地图正确姿势(二) 实现大头针始终在地图中心,拖动地图实时poi...

网友评论

    本文标题:iOS 高德地图百度地图实现后台定位

    本文链接:https://www.haomeiwen.com/subject/ihlynxtx.html