BaiduMap SDK-Location定位
目录
2.2 LocationClientOption(定位参数)
2.5 LocationClientOption.LocationMode(定位模式)
2.6 MyLocationConfiguration(定位图层配置)
2.7 MyLocationConfiguration.LocationMode(定位图层模式)
2.8 MyLocationData.Builder(定位数据结构)
2.9 BDAbstractLocationListener(地位回调监听)
2.9.2 onConnectHotSpotMessage(是否是移动热点回调)
2.9.3 onLocDiagnosticMessage(返回定位诊断信息)
2.10.1 SetNotifyLocation(位置提醒参数)
1 定位简介
百度地图定位SDK提供了GPS、基站、WiFi、地磁、蓝牙、传感器等多种定位方式,适用于室内、室外多种定位场景,定位精度高、覆盖率广、网络定位请求流量小、定位速度快;
官方文档参考:http://wiki.lbsyun.baidu.com/cms/androidloc/doc/v7.5/index.html
2 常用类
2.1 LocationClient(定位)
官方参考:LocationClient
以下是常用参数:
java.lang.String |
获取用户设置的KEY |
static BDLocation |
getBDLocationInCoorType(BDLocation src, java.lang.String transferType) 根据设定的转换坐标系类型得到相应坐标系下的BDLocation |
同步定位,返回最近一次定位结果 |
|
void |
onReceiveLocation(BDLocation location) |
void |
registerLocationListener(BDAbstractLocationListener listener) 注册 BDAbstractLocationListener 定位监听函数 |
void |
registerNotify(BDNotifyListener mNotify) 注册位置提醒监听 |
void |
registerNotifyLocationListener(BDLocationListener listener) NA |
void |
removeNotifyEvent(BDNotifyListener mNotify) 取消注册的位置提醒监听 |
boolean |
触发请求当前连接wifi是否是移动热点的状态 |
int |
离线定位请求,异步返回,结果在locationListener中获取. |
void |
restart() 重启定位SDK,后台常驻运行的APP可以尝试在回到前台的情况下重启定位SDK,防止因长时间后台运行被系统回收定位权限造成定位失败 |
void |
setLocOption(LocationClientOption locOption) 设置 LocationClientOption |
void |
start() 启动定位sdk |
boolean |
打开室内定位模式,该模式下会加快定位速度并输出连续室内定位结果;当BDLocation.getFloor() ! |
void |
stop() 停止定位sdk |
boolean |
关闭室内定位模式 |
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 |
|
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进行定位,这种模式下不支持室内环境的定位
枚举常量和说明 |
低功耗模式 |
仅设备(Gps)模式 |
高精度模式 |
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(定位图层模式)
定位图层显示方式
罗盘态,显示定位方向圈,保持定位图标在地图中心 |
跟随态,保持定位图标在地图中心 |
普通态: 更新定位数据时不对地图做任何操作 |
2.8 MyLocationData.Builder(定位数据结构)
accuracy(float accuracy) 设置定位数据的精度信息,单位:米 |
|
build() 构建生成定位数据对象 |
|
direction(float direction) 设置定位数据的方向信息 |
|
latitude(double lat) 设置定位数据的纬度 |
|
longitude(double lng) 设置定位数据的经度 |
|
satellitesNum(int num) 设置定位数据的卫星数目 |
|
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配置和案例