1.定义 定位客户端 并且用getApplicationContext()【官方推荐】初始化:
LocationClient mBdLocationManager = new LocationClient(getApplicationContext());
2.为定位客户端配置定位所需要的参数:
LocationClientOption lcOption = new LocationClientOption();
//设置定位模式:高精度,低功耗,仅设备
lcOption.setLocationMode(LocationMode.Hight_Accuracy);
//设置坐标系
lcOption.setCoorType("bd09ll");
//设置GPS打开
lcOption.setOpenGps(true);
//设置需要地址信息
lcOption.setIsNeedAddress(true);
//设置每秒更新一次位置信息
lcOption.setScanSpan(1000);
//设置需要位置描述信息
lcOption.setIsNeedLocationDescribe(true);
mBdLocationManager.setLocOption(lcOption);
3.为位置客户端注册位置监听器并实现:
mBdLocationManager.registerLocationListener(mBdLocationListener);
private BDAbstractLocationListener mBdLocationListener = new BDAbstractLocationListener() {
//当位置对象为空或者因为退出而到时地图对象销毁为空时,不监听
public void onReceiveLocation(BDLocation location) {
if (location == null || mMapView == null)
return;
Log.v("aaa","方向:" + location.getDirection() + ",纬度:" + location.getLatitude()
+ ",经度:" + location.getLongitude()
+ ",时间:" + location.getTime() + ",描述:"
+ location.getLocationDescribe() + ",地址:" + location.getAddrStr() + ",精度:" + location.getRadius());
}
};
4.定位客户端开始启动定位:
mBdLocationManager.start();
5.实现定位到当前位置并且有图标:
5.1:地图对象开启定位图层:
mBaiduMap.setMyLocationEnabled(true);
5.2:地图对象设置定位时的地图缩放级别(500米):
mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(15.0f));
5.3:为地图对象设置定位数据:精度,方向,经度,纬度
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
.latitude(location.getLatitude())
.longitude(location.getLongitude())
.direction(100)
.build();
mBaiduMap.setMyLocationData(locData);
5.4:为地图对象配置参数:定位方式(罗盘态,跟随态,常态),是否允许显示方向,用户自定义显示图标:
MyLocationConfiguration myLocConfig = new MyLocationConfiguration(locationMode, true, mLocBitmap);
mBaiduMap.setMyLocationConfiguration(myLocConfig);