欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

BaiduMap SDK-Location定位

程序员文章站 2022-04-20 11:52:59
...

目录

1 定位简介

2 常用类

2.1 LocationClient(定位)

2.2 LocationClientOption(定位参数)

2.3 BDLocation(百度坐标)

2.4 Poi(POI封装类)

2.5 LocationClientOption.LocationMode(定位模式)

2.6 MyLocationConfiguration(定位图层配置)

2.7 MyLocationConfiguration.LocationMode(定位图层模式)

2.8 MyLocationData.Builder(定位数据结构)

2.9 BDAbstractLocationListener(地位回调监听)

2.9.1 onReceiveLocation(定位回调)

2.9.2 onConnectHotSpotMessage(是否是移动热点回调)

2.9.3  onLocDiagnosticMessage(返回定位诊断信息)

2.10 BDNotifyListener(位置提醒监听)

2.10.1 SetNotifyLocation(位置提醒参数)

2.10.2 onNotify(位置提醒回调)

3. Location配置

4. Location案例

5. Location自定义定位图标


1 定位简介

百度地图定位SDK提供了GPS、基站、WiFi、地磁、蓝牙、传感器等多种定位方式,适用于室内、室外多种定位场景,定位精度高、覆盖率广、网络定位请求流量小、定位速度快;

BaiduMap SDK-Location定位

官方文档参考:http://wiki.lbsyun.baidu.com/cms/androidloc/doc/v7.5/index.html

2 常用类

2.1 LocationClient(定位)

官方参考:LocationClient

以下是常用参数:

java.lang.String

getAccessKey()

获取用户设置的KEY

static BDLocation

getBDLocationInCoorType(BDLocation src, java.lang.String transferType)

根据设定的转换坐标系类型得到相应坐标系下的BDLocation

BDLocation

getLastKnownLocation()

同步定位,返回最近一次定位结果

LocationClientOption

getLocOption() 

void

onReceiveLocation(BDLocation location) 

void

registerLocationListener(BDAbstractLocationListener listener)

注册 BDAbstractLocationListener 定位监听函数

void

registerNotify(BDNotifyListener mNotify)

注册位置提醒监听

void

registerNotifyLocationListener(BDLocationListener listener)

NA

void

removeNotifyEvent(BDNotifyListener mNotify)

取消注册的位置提醒监听

boolean

requestHotSpotState()

触发请求当前连接wifi是否是移动热点的状态

int

requestOfflineLocation()

离线定位请求,异步返回,结果在locationListener中获取.

void

restart()

重启定位SDK,后台常驻运行的APP可以尝试在回到前台的情况下重启定位SDK,防止因长时间后台运行被系统回收定位权限造成定位失败

void

setLocOption(LocationClientOption locOption)

设置 LocationClientOption

void

start()

启动定位sdk

boolean

startIndoorMode()

打开室内定位模式,该模式下会加快定位速度并输出连续室内定位结果;当BDLocation.getFloor() !

void

stop()

停止定位sdk

boolean

stopIndoorMode()

关闭室内定位模式

void

unRegisterLocationListener(BDAbstractLocationListener listener)

取消之前注册的 BDAbstractLocationListener 定位监听函数

void

unRegisterLocationListener(BDLocationListener listener)

已过时。 

请使用unRegisterLocationListener(BDAbstractLocationListener listener)

boolean

updateLocation(android.location.Location gpslocation)

NA

 

2.2 LocationClientOption(定位参数)

官方参考:LocationClientOption

      LocationClientOption option = new LocationClientOption();
        option = new LocationClientOption();
        //可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
        option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving);
        //可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
        option.setCoorType("bd09ll");
        //可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的
        option.setScanSpan(3000);
        //可选,设置是否需要地址信息,默认不需要
        option.setIsNeedAddress(true);
        //可选,设置是否需要地址描述
        option.setIsNeedLocationDescribe(true);
        //可选,设置是否需要设备方向结果
        option.setNeedDeviceDirect(false);
        //可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
        option.setLocationNotify(false);
        //可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
        option.setIgnoreKillProcess(true);
        //可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京*附近”
        option.setIsNeedLocationDescribe(true);
        //可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
        option.setIsNeedLocationPoiList(true);
        //可选,默认false,设置是否收集CRASH信息,默认收集
        option.SetIgnoreCacheException(false);
        //可选,默认false,设置是否开启Gps定位
        option.setOpenGps(true);
        //可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
        option.setIsNeedAltitude(false);

2.3 BDLocation(百度坐标)

官方参考:BDLocation

 

2.4 Poi(POI封装类)

官方参考:POI

int

describeContents() 

java.lang.String

getId()

获取POI的ID字符串

java.lang.String

getName()

获取POI的名字字符串

double

getRank()

获取POI概率值

void

writeToParcel(android.os.Parcel dest, int flags) 

2.5 LocationClientOption.LocationMode(定位模式)

          定位模式 分为高精度定位模式 低功耗定位模式 仅设备定位模式 高精度定位模式:这种定位模式下,会同时使用网络定位和GPS定位,优先返回最高精度的定位结果; 低功耗定位模式:这种定位模式下,不会使用GPS,只会使用网络定位(Wi-Fi和基站定位) 仅用设备定位模式:这种定位模式下,不需要连接网络,只使用GPS进行定位,这种模式下不支持室内环境的定位

枚举常量和说明

Battery_Saving

低功耗模式

Device_Sensors

仅设备(Gps)模式

Hight_Accuracy

高精度模式

 

2.6 MyLocationConfiguration(定位图层配置)

构造函数1:

public MyLocationConfiguration(MyLocationConfiguration.LocationMode mode,
                       boolean enableDirection,
                       BitmapDescriptor customMarker,
                       int accuracyCircleFillColor,
                       int accuracyCircleStrokeColor)
构造函数

参数:
mode - 定位图层显示方式, 默认为 LocationMode.NORMAL 普通态
enableDirection - 是否允许显示方向信息
customMarker - 设置用户自定义定位图标,可以为 null
accuracyCircleFillColor - 设置精度圈填充颜色
accuracyCircleStrokeColor - 设置精度圈填充颜色

构造函数2:

public MyLocationConfiguration(MyLocationConfiguration.LocationMode mode,
                       boolean enableDirection,
                       BitmapDescriptor customMarker)
构造函数

参数:
mode - 定位图层显示方式, 默认为 LocationMode.NORMAL 普通态
enableDirection - 是否允许显示方向信息
customMarker - 设置用户自定义定位图标,可以为 null

  

字段属性:

int accuracyCircleFillColor

精度圈填充颜色

int accuracyCircleStrokeColor

精度圈边框颜色

BitmapDescriptor customMarker

用户自定义定位图标

boolean enableDirection

是否允许显示方向信息

MyLocationConfiguration.LocationMode locationMode

定位图层显示方式

2.7 MyLocationConfiguration.LocationMode(定位图层模式)

 定位图层显示方式

COMPASS

罗盘态,显示定位方向圈,保持定位图标在地图中心

FOLLOWING

跟随态,保持定位图标在地图中心

NORMAL

普通态: 更新定位数据时不对地图做任何操作

 

2.8 MyLocationData.Builder(定位数据结构)

 

MyLocationData.Builder

accuracy(float accuracy)

设置定位数据的精度信息,单位:米

MyLocationData

build()

构建生成定位数据对象

MyLocationData.Builder

direction(float direction)

设置定位数据的方向信息

MyLocationData.Builder

latitude(double lat)

设置定位数据的纬度

MyLocationData.Builder

longitude(double lng)

设置定位数据的经度

MyLocationData.Builder

satellitesNum(int num)

设置定位数据的卫星数目

MyLocationData.Builder

speed(float speed)

设置定位数据的速度

 

2.9 BDAbstractLocationListener(地位回调监听)

2.9.1 onReceiveLocation(定位回调)

public abstract void onReceiveLocation(BDLocation location)
定位请求回调函数

参数:
location - 定位结果

2.9.2 onConnectHotSpotMessage(是否是移动热点回调)

public void onConnectHotSpotMessage(java.lang.String connectWifiMac,
                                    int hotSpotState)
回调连接wifi是否是移动热点

参数:
connectWifiMac - 非连接wifi或者异常时返回null,返回的mac已经去除了『冒号』
hotSpotState - LocationClient.CONNECT_HOT_SPOT_TRUE,LocationClient.CONNECT_HOT_SPOT_FALSE,
               LocationClient.CONNECT_HOT_SPOT_UNKNOWN


2.9.3  onLocDiagnosticMessage(返回定位诊断信息)

public void onLocDiagnosticMessage(int locType,
                                   int diagnosticType,
                                   java.lang.String diagnosticMessage)
回调定位诊断信息,开发者可以根据相关信息解决定位遇到的一些问题

参数:
locType - 当前定位类型
diagnosticType - 诊断类型(1~9)
diagnosticMessage - 具体的诊断信息释义

2.10 BDNotifyListener(位置提醒监听)

2.10.1 SetNotifyLocation(位置提醒参数)

public void SetNotifyLocation(double latitude,
                              double longitude,
                              float radius,
                              java.lang.String coorType)
设置位置提醒的点的相关参数,

参数:
latitude - 纬度,经度,距离范围,坐标系类型(gcj02,gps,bd09,bd09ll)
longitude - 经度
radius - 距离范围
oorType - 坐标系类型(gcj02,gps,bd09,bd09ll)

2.10.2 onNotify(位置提醒回调)

public void onNotify(BDLocation mlocation,
                     float distance)
位置提醒回调函数

参数:
BDLocation - 位置坐标
distance - 当前位置跟设定提醒点的距离

3. Location配置

参考:BaiduMap SDK-Locatioin配置和案例

4. Location案例

参考:BaiduMap SDK-Locatioin配置和案例

5. Location自定义定位图标

参考:BaiduMap SDK-Location自定义定位图标