您的位置:首页 > 移动开发 > Android开发

百度定位(Android)

2019-06-18 21:41 1796 查看

百度定位(Android)

程序员关心的几个问题
  1. 百度地图定位SDK使用什么坐标系?
  • 三种类型的坐标,分别是国测局坐标、百度墨卡托坐标和百度经纬度坐标
  • 其中百度经纬度坐标能无偏差地显示在百度地图上
  • 如果当前定位点为海外,默认且只能返回WGS84类型的坐标,即火星坐标
  1. 什么是国测局坐标、百度坐标、WGS84坐标?
  • WGS84:表示GPS获取的坐标
  • GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系
  • BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中BD09II表示百度经纬度坐标,BD09MC表示百度墨卡托米制坐标
  1. 百度坐标为何有偏移?
  • 国际经纬度坐标标准为WGS84,国内必须至少使用国测局制定的GCJ02坐标系对地理位置进行首次加密。百度坐标在此基础上,进行了二次加密措施,进一步保护了个人隐私
百度地图SDK更新日志

2011

  • 2011.08 Android定位SDK正式上线,实现基础定位能力
  • 2011.11 增加超时限制,超过15秒,在onReceiveListener中接收到的串是"InternetException",而不是json串

2012

  • 2012.05 初始化成功后,会立即进行一次定位,无论使用定时定位模式还是一次定位模式。即在service启动后,会立即进行定位,并调用BDLocationListener进行通知。修复了之前少数情况下坐标以及时间戳不准确的问题
  • 2012.09 新增省/市/区分级地理信息查询功能
  • 2012.12 新增离线定位功能:离线状态请求定位将返回缓存基站定位结果;
  • 定位结果新增“是否需要地址信息”设置,默认返回结果无地址信息,从而节省流量
  • 定位SDK架构升级各个app单独用自己的定位service,避免各个app共用1个servcie出现的权限问题

2013

  • 2013.02 优化定位性能,提高网络定位精度
  • 2013.08 新增地理围栏服务
  • 定位SDK加入key验证机制

2014

  • 2014.02 根据传感器信息获取方向信息功能
  • 根据网络请求判断运营商属性功能
  • 优化定位模式,修改之前GPS和网络定位优先模式为高精度定位模式,低功耗定位模式,仅用设备定位模式三种新模式
  • 2014.06
      升级地理围栏功能,增加地理围栏离开判断功能
    • 缩减定位SDK开发包大小
  • 2014.12
      新增国外(全球)定位能力开放,直接替换开发包无需修改代码
    • Android L 适配优化
    • 修复GPS定位方式未返回地址的问题

    2015

    • 2015.04 优化初次定位速度,开启wifi时,平均首次定位时间达137ms,比竞品快57%
    • 优化国外定位速度
  • 2015.05
      BDLocation新增接口getcountry(),getCountryCode()接口
    • 修复连续GPS定位时偶尔返回网络定位结果的问题
    • 优化首次定位连续返回多个结果问题
  • 2015.07
      新版离线定位功能,速度精度全面升级
    • 新增位置语义化/POI功能
    • 国外定位地址信息为空问题
    • 国际化定位cdma手机不能定位成功
  • 2015.8 适配Android M版本
  • 2015.10 国外定位某些情况城市返回为空
  • 2016

    • 2016.01 新增位置自动提醒功能
    • 2016.03 修复Google Play检测到的https证书漏洞问题,全球定位服务全新升级
    • 2016.08 按照功能不同,将原有SDK分为如下四种:基础定位,离线定位,室内定位,全量定位
    • 加入国内外判断接口,涉及接口为:BDLocation.getLocationWhere()
    • 加入网络定位返回海拔功能,涉及接口为:BDLocation.getAltitude()
    • 加入室内外判断接口,涉及接口为:BDLocation.getUserIndoorState()
    • 加入GPS质量判断接口,涉及接口为:BDLocation.getGpsAccuracyStatus()

    2017

    • 2017.02 新增移动热点判断功能,涉及接口:LocationClient.requestHotSpotState()
    • LocationClient增加独立线程,修复异常情况下造成的ANR
  • 2017.08
      优化精准室内定位环境下,连续定位结果平滑性
    • 优化调整发起定位请求为子线程,接收定位结果回调为主线程
    • 新增Abstract类型的监听接口BDAbstractLocationListener,用于实现定位监听,原有BDLocationListener暂时保留,推荐开发者升级到Abstract类型的新监听接口使用
    • 在BDAbstractLocationListener中新增onLocDiagnosticMessage方法,用于获取定位错误返回码等信息。具体错误码及说明,请参加类参考中的说明
    • 在LocationClientOption中新增setWifiCacheTimeOut(int time)方法,用于设置WIFI有效期。如果开发者设置了这个接口,首次启动定位时,会先判断当前WIFI是否超出有效期,超出有效期的话,会先重新扫描WIFI,然后再定位,WIFI扫描大概需要1-2s的时间。本功能更适合于对首次定位精度要求高、对速度无要求的开发者
    • 在BDLocation类中新增getLocationID()方法,用于获取定位唯一标识,这个标识只与定位本身相关。当开发者遇到定位问题时,可将这个唯一标识、出现问题时间及问题描述信息发送至loc-bugs@baidu.com邮件组,我们会有专人支持解决
  • 2017.12
      优化精准室内定位环境下,连续定位结果平滑性。注意:使用带有室内精准定位的SDK版本时,需增加集成库文件libindoor.so
    • 优化JNI代码,so库文件升级为liblocSDK7b.so
    • 新增适配Android 8.0系统后台连续定位,在LocationClient类中新增方法enableLocInForeground(),用于开启前台定位模式,避免因App退后台时,系统影响正常定位
    • 在基础定位模块中,类BDAbstractLocationListener中新增onLocDiagnosticMessage方法,用于回调定位问题诊断信息
    • 在BDLocation类中新增getAdCode()方法,用于获取行政区划代码
    • 新增辅助H5定位,在LocationClient类中新增方法enableAssistantLocation()方法,调用该方法启动H5辅助定位功能。结合JS API中的定位功能使用,可使JS API中的定位效果更佳

    2018

    • 2018.03 修复连续定位扫描不到WIFI时出现Crash的问题
    参考
    1. SHA1的获取方法
    2. 百度SDK
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: