/**
* 设置定位的模式
*/
// 定位相关
private LocationClient mLocClient;
public MyLocationListennermyListener = new MyLocationListenner();
private void setLBS()
{
// 开启定位图层
baiduMap.setMyLocationEnabled(true);
// 定位初始化
mLocClient = new LocationClient(this);
mLocClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);// 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);
mLocClient.setLocOption(option);
mLocClient.start();
//1.定位模式
//地图SDK支持三种定位模式:NORMAL(普通态), FOLLOWING(跟随态), COMPASS(罗盘态)
//mCurrentMode =LocationMode.FOLLOWING;//定位跟随态
//mCurrentMode =LocationMode.NORMAL; //默认为 LocationMode.NORMAL 普通态
//mCurrentMode =LocationMode.COMPASS; //定位罗盘态
//2.是否开启方向
//3.设置自定义定位图标
BitmapDescriptor currentMaker =BitmapDescriptorFactory.fromResource(R.drawable.ic_gps);
int accuracyCircleFillColor = 0xAAFFFF88;//自定义精度圈填充颜色
int accuracyCircleStrokeColor = 0xAA00FF00;//自定义精度圈边框颜色;
MyLocationConfiguration configuration = new MyLocationConfiguration(
MyLocationConfiguration.LocationMode.NORMAL,//1.定位模式
true,//2.是否开启方向
currentMaker,//3.设置自定义定位图标
accuracyCircleFillColor,//自定义精度圈填充颜色
accuracyCircleStrokeColor//自定义精度圈边框颜色;
);
baiduMap.setMyLocationConfiguration(configuration);
}
/**
* 定位SDK监听函数
*/
private boolean isFirstLoc = true;// 是否首次定位
public class MyLocationListenner implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// map view 销毁后不在处理新接收的位置
if (location == null || mapView == null)
return;
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
baiduMap.setMyLocationData(locData);
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
baiduMap.animateMapStatus(u);
}
}
public void onReceivePoi(BDLocation poiLocation) {
}
}
在oncreate里面调用
setLBS();
在ondestory里面销毁
@Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mapView.onDestroy(); mapView = null; // 关闭定位图层 baiduMap.setMyLocationEnabled(false); // 退出时销毁定位 if (mLocClient != null) { mLocClient.stop(); }
}