百度地图的定位以及一些别的事


我们使用百度地图,中心定位是最基本的功能,我定义了几个方法,来进行中心定位。

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);}