天天看点

百度定位(Android)

百度地图

,

导航

国内APP开发,只要有基于定位需求,就会关注一下

百度定位

1.

程序员关心的几个问题

  1. 百度地图定位SDK使用什么坐标系?
  • 三种类型的坐标,分别是国测局坐标、百度墨卡托坐标和百度经纬度坐标
  • 其中百度经纬度坐标能无偏差地显示在百度地图上
  • 如果当前定位点为海外,默认且只能返回WGS84类型的坐标,即火星坐标
  1. 什么是国测局坐标、百度坐标、WGS84坐标?
  • WGS84:表示GPS获取的坐标
  • GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系
  • BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中BD09II表示百度经纬度坐标,BD09MC表示百度墨卡托米制坐标
  1. 百度坐标为何有偏移?
  • 国际经纬度坐标标准为WGS84,国内必须至少使用国测局制定的GCJ02坐标系对地理位置进行首次加密。百度坐标在此基础上,进行了二次加密措施,进一步保护了个人隐私
  1. 应用快速集成百度地图SDK步骤
  • 1、 注册和获取密钥
  • 2、 Android Studio配置
  • 3、 开发注意事项

2.

百度地图SDK更新日志

2021

02.02 v7.2.0

【新增】

  • 新增批量删除overlay接口。BaiduMap -> removeOverLays(List overlays);

【修复】

  • 1、修复自定义指南针图标不生效问题。
  • 2、修复自定义热力图清除缓存不生效问题。
  • 3、修复步骑行导航震动提示引起的crash。
  • 4、修复其他已知问题。
2020

02.13 v6.2.0

【新增】

  • 1、驾车路线规划增加收费字段: toll。
  • 2、新增绘制Polyline时, 是否需要对坐标点进行抽稀的接口 -> isThined(boolean isThined)。
  • 3、步骑行导航新增获取导航底图的接口 -> getNaviMap()。
  • 4、BitmapDescriptor增加清除缓存接口 -> clearCache()。

【修复】

  • 1、修复某些地区ipv6网络环境较差的情况下,出现的底图加载网格问题。
  • 2、修复绘制polyline时,设置纹理索引但不设置纹理列表和颜色而出现的崩溃问题。
  • 3、修复计算点到直线的垂足问题。
  • 4、修复绘制带有重复点的多纹理polyline时,部分颜色错乱的问题。
  • 5、修复已知空指针等稳定性问题。

09.10 v7.0.0

【新增】

  • 1、引擎架构升级,全面提升底图渲染效果和流畅度。
  • 2、检索组件新增推荐上车点服务。
  • 3、检索组件新增天气查询服务。
  • 4、polyline绘制增加自定义拐角样式。
  • 5、适配Android11 Beta版本。

【修复】

  • 1、修复地图释放偶现的ANR问题。
  • 2、修复添加或更新覆盖物和地图释放异步时偶现的crash问题。
  • 3、修复其他已知问题。
2019

03.15

v5.3.0

  • 新增

    室内导航
  • 新增

    根据densityDpi构造BitmapDescriptor的接口,主要用于创建Marker,InfoWindow等Overlay的纹理图片
  • 优化

    步骑行导航效果
  • 优化

    多地图场景下的地图内存管理
  • 优化

    室内图展示效果

08.03

v5.4.4

  • 优化

    绘制性能、

    优化

    内存
2018

2018.03

  • 修复连续定位扫描不到WIFI时出现Crash的问题
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()方法,用于获取定位唯一标识,这个标识只与定位本身相关。当开发者遇到定位问题时,可将这个唯一标识、出现问题时间及问题描述信息发送至[email protected]邮件组,我们会有专人支持解决

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中的定位效果更佳
2016
  • 2016.01 新增位置自动提醒功能
  • 2016.03 修复Google Play检测到的https证书漏洞问题,全球定位服务全新升级
  • 2016.08
    • 按照功能不同,将原有SDK分为如下四种:基础定位,离线定位,室内定位,全量定位
    • 加入国内外判断接口,涉及接口为:BDLocation.getLocationWhere()
    • 加入网络定位返回海拔功能,涉及接口为:BDLocation.getAltitude()
    • 加入室内外判断接口,涉及接口为:BDLocation.getUserIndoorState()
    • 加入GPS质量判断接口,涉及接口为:BDLocation.getGpsAccuracyStatus()
2015
  • 2015.04
    • 优化初次定位速度,开启wifi时,平均首次定位时间达137ms,比竞品快57%
    • 优化国外定位速度
  • 2015.05
    • BDLocation新增接口getcountry(),getCountryCode()接口
    • 修复连续GPS定位时偶尔返回网络定位结果的问题
    • 优化首次定位连续返回多个结果问题
  • 2015.07
    • 新版离线定位功能,速度精度全面升级
    • 新增位置语义化/POI功能
    • 国外定位地址信息为空问题
    • 国际化定位cdma手机不能定位成功
  • 2015.8 适配Android M版本
  • 2015.10 国外定位某些情况城市返回为空
2014
  • 2014.02
    • 根据传感器信息获取方向信息功能
    • 根据网络请求判断运营商属性功能
    • 优化定位模式,修改之前GPS和网络定位优先模式为高精度定位模式,低功耗定位模式,仅用设备定位模式三种新模式
  • 2014.06
    • 升级地理围栏功能,增加地理围栏离开判断功能
    • 缩减定位SDK开发包大小
  • 2014.12
    • 新增国外(全球)定位能力开放,直接替换开发包无需修改代码
    • Android L 适配优化
    • 修复GPS定位方式未返回地址的问题
2013
  • 2013.02 优化定位性能,提高网络定位精度
  • 2013.08
    • 新增地理围栏服务
    • 定位SDK加入key验证机制
2012
  • 2012.05 初始化成功后,会立即进行一次定位,无论使用定时定位模式还是一次定位模式。即在service启动后,会立即进行定位,并调用BDLocationListener进行通知。修复了之前少数情况下坐标以及时间戳不准确的问题
  • 2012.09 新增省/市/区分级地理信息查询功能
  • 2012.12
    • 新增离线定位功能:离线状态请求定位将返回缓存基站定位结果;
    • 定位结果新增“是否需要地址信息”设置,默认返回结果无地址信息,从而节省流量
    • 定位SDK架构升级各个app单独用自己的定位service,避免各个app共用1个servcie出现的权限问题
2011
  • 2011.08 Android定位SDK正式上线,实现基础定位能力
  • 2011.11 增加超时限制,超过15秒,在onReceiveListener中接收到的串是"InternetException",而不是json串
参考
  1. SHA1的获取方法