1.初始化地图比例尺的大小
先看一下百度地图API缩放级别和比例尺的大小关系。
百度地图API一共分为19级,比例尺分别为:
[1:20米(简称20米,后同),50米,100米,200米,500米,1公里,2公里,5公里,10公里,20公里,25公里,50公里,100公里,200公里,500公里,1000公里,2000公里,5000公里,10000公里]
分别对应:
[19级,18级,17级,16级,15级,14级,13级,12级,11级,10级,9级,8级,7级,6级,5级,4级,3级,2级,1级]
//在定义的定位监听的回调方法中
public class MyLocationListenner implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// map view 销毁后不在处理新接收的位置
if (location == null || mMapView == null) {
return;
}
LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());
MapStatus.Builder builder = new MapStatus.Builder();
//在此处设置初始化的比例尺大小13.0f代表13级对应2km
builder.target(ll).zoom(13.0f);
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
}
public void onReceivePoi(BDLocation poiLocation) {
}
}
2.设置地图缩放按钮的摆放位置
//这是控制缩放控件的位置
mMapView.getChildAt(2).setPadding(0,0,width-200,height-400);
3.去掉百度地图的logo
// 删除百度地图LoGo
mMapView.removeViewAt(1);
4.显示当前位置的mapview
// 开启定位图层
mBaiduMap.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();
5.在地图上定义自己的覆盖物
// 初始化全局 bitmap 信息,不用时及时 recycle
private Marker mMarkerA;
BitmapDescriptor bdA = BitmapDescriptorFactory.fromResource(R.mipmap.icon_gcoding);
//初始化覆盖物
private void initOverlay() {
LatLng llA = new LatLng(30.287995, 120.122244);
MarkerOptions ooA = new MarkerOptions().position(llA).icon(bdA)
.zIndex(9).draggable(true);
ooA.animateType(MarkerOptions.MarkerAnimateType.drop);
mMarkerA = (Marker) (mBaiduMap.addOverlay(ooA));
}
//设置marker的点击监听
mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
//显示marker对话框,按自己的需求定义
showMarkerDialog(marker);
return true;
}
});
6.回到当前定位的位置视图
private double mCurrentLat = 0.0;
private double mCurrentLon = 0.0;
public class MyLocationListenner implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// map view 销毁后不在处理新接收的位置
if (location == null || mMapView == null) {
return;
}
mCurrentLat = location.getLatitude();
mCurrentLon = location.getLongitude();
}
public void onReceivePoi(BDLocation poiLocation) {
}
}
//回到当前定位的位置视图
private void backCurrentPosition(){
LatLng ll = new LatLng(mCurrentLat,mCurrentLon);
MapStatus.Builder builder = new MapStatus.Builder();
builder.target(ll).zoom(13.0f);
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
}
网友评论