目录
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自定义定位图标
百度地图定位SDK提供了GPS、基站、WiFi、地磁、蓝牙、传感器等多种定位方式,适用于室内、室外多种定位场景,定位精度高、覆盖率广、网络定位请求流量小、定位速度快;
官方文档参考:http://wiki.lbsyun.baidu.com/cms/androidloc/doc/v7.5/index.html
官方参考: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 |
官方参考: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);
官方参考:BDLocation
官方参考: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) |
定位模式 分为高精度定位模式 低功耗定位模式 仅设备定位模式 高精度定位模式:这种定位模式下,会同时使用网络定位和GPS定位,优先返回最高精度的定位结果; 低功耗定位模式:这种定位模式下,不会使用GPS,只会使用网络定位(Wi-Fi和基站定位) 仅用设备定位模式:这种定位模式下,不需要连接网络,只使用GPS进行定位,这种模式下不支持室内环境的定位
枚举常量和说明 |
Battery_Saving 低功耗模式 |
Device_Sensors 仅设备(Gps)模式 |
Hight_Accuracy 高精度模式 |
构造函数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 定位图层显示方式 |
定位图层显示方式
COMPASS 罗盘态,显示定位方向圈,保持定位图标在地图中心 |
FOLLOWING 跟随态,保持定位图标在地图中心 |
NORMAL 普通态: 更新定位数据时不对地图做任何操作 |
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) 设置定位数据的速度 |
public abstract void onReceiveLocation(BDLocation location)
定位请求回调函数
参数:
location - 定位结果
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
onLocDiagnosticMessage(返回定位诊断信息)
public void onLocDiagnosticMessage(int locType,
int diagnosticType,
java.lang.String diagnosticMessage)
回调定位诊断信息,开发者可以根据相关信息解决定位遇到的一些问题
参数:
locType - 当前定位类型
diagnosticType - 诊断类型(1~9)
diagnosticMessage - 具体的诊断信息释义
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)
public void onNotify(BDLocation mlocation,
float distance)
位置提醒回调函数
参数:
BDLocation - 位置坐标
distance - 当前位置跟设定提醒点的距离
参考:BaiduMap SDK-Locatioin配置和案例
参考:BaiduMap SDK-Locatioin配置和案例
参考:BaiduMap SDK-Location自定义定位图标