前言
这篇文章总结一下项目开发过程中,百度地图使用到的一些东西
1.封装定位管理类
/**
* 定位管理
*/
public class LocationManager {
private static LocationManager mInstance;
private LocationClient mLocationClient;
private LocationClientOption option;
public static LocationManager getInstance() {
if (mInstance == null) {
mInstance = new LocationManager();
}
return mInstance;
}
//初始化设置
void init(Context context) {
mLocationClient = new LocationClient(context);
option = new LocationClientOption();
option.setOpenGps(true); // 打开gps
option.setIsNeedAddress(true);//是否需要地址信息
option.setCoorType("bd09ll"); // 返回百度经纬度坐标系
option.setScanSpan(30000);//发起请求定位间隔,默认0,大于1000ms才有效,这里指定30秒定位一次
mLocationClient.setLocOption(option);
mLocationClient.registerLocationListener(new BDAbstractLocationListener() {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
//此处可以发送定位成功的消息
}
});
}
//设置定位间隔
public void setScanSpan(int scanSpan) {
option.setScanSpan(scanSpan);
mLocationClient.setLocOption(option);
}
public LocationClient getLocationClient() {
return mLocationClient;
}
}
2.当前定位位置添加自定义图标
//设置这个才能显示图标
mBaidumap.setMyLocationEnabled(true);
//设置自定义定位样式
BitmapDescriptor marker = BitmapDescriptorFactory.fromResource(R.drawable.location_me);
MyLocationConfiguration.LocationMode normal = MyLocationConfiguration.LocationMode.NORMAL;
MyLocationConfiguration configuration = new MyLocationConfiguration(normal, true, marker,
accuracyCircleFillColor, accuracyCircleStrokeColor);
mBaidumap.setMyLocationConfiguration(configuration);
MyLocationData myLocationData = new MyLocationData.Builder()
.accuracy(3.0f)
//纬度
.latitude(startLat)
//经度
.longitude(startLng).build();
mBaidumap.setMyLocationData(myLocationData);
LatLng ll = new LatLng(startLat,
startLng);
MapStatus.Builder builder = new MapStatus.Builder();
builder.target(ll).zoom(18.0f);
mBaidumap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));