我们使用百度地图,中心定位是最基本的功能,我定义了几个方法,来进行中心定位。
protected void centerToLocation(LatLng latLng) {
//LatLng cenpt = new LatLng(latLng.latitude, latLng.longitude);
//定义地图状态,地图缩放级别 3~19
MapStatus newMapStatus = new MapStatus.Builder().target(latLng).zoom(15).build();
//定义MapStatusUpdate对象,以便描述地图状态将要发生的变化
MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(newMapStatus);
//改变地图状态
//mBaiduMap.animateMapStatus(mMapStatusUpdate, duration);
mBaiduMap = bmapView.getMap();
mBaiduMap.setMyLocationEnabled(true);
mBaiduMap.setMapStatus(mMapStatusUpdate);
}
protected void centerToLocation(BDLocation location) {
LatLng cenpt = new LatLng(location.getLatitude(), location.getLongitude());
//定义地图状态,地图缩放级别 3~19
MapStatus newMapStatus = new MapStatus.Builder().target(cenpt).zoom(19).build();
//定义MapStatusUpdate对象,以便描述地图状态将要发生的变化
MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(newMapStatus);
//改变地图状态
//mBaiduMap.animateMapStatus(mMapStatusUpdate, duration);
mBaiduMap = bmapView.getMap();
mBaiduMap.setMyLocationEnabled(true);
mBaiduMap.setMapStatus(mMapStatusUpdate);
}
2个方法传入的参数不同,因为有时我们从百度获取到的参数可能是LatLng,有时是BDLocation,所有使用2种参数来进行中心定位。
接着是添加Maker坐标点,同样提供2种方法。
protected void addPoint(BDLocation location) {
//定义Maker坐标点
LatLng point = new LatLng(location.getLatitude(), location.getLongitude());
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.img_red);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option);
}
protected void addPoint(LatLng latLng) {
//定义Maker坐标点
LatLng point = new LatLng(latLng.latitude, latLng.longitude);
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.img_red_1);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option);
}
最后提供一个百度地图最简单的初始化的方法
protected void initMap(BDLocation location) {
mBaiduMap = bmapView.getMap();
mBaiduMap.setMyLocationEnabled(true);
mcity = location.getCity();
mLatlng = new LatLng(location.getLatitude(), location.getLongitude());
MyLocationConfiguration.LocationMode mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL;
// 构造定位数据
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(0).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
// 设置定位数据
mBaiduMap.setMyLocationData(locData);
centerToLocation(location);}