一:为地图设置事件
注意新版本中要有一个getMap
mMapView.getMap().setOnMapStatusChangeListener(listener);
OnMapStatusChangeListener listener = new OnMapStatusChangeListener() {
/**
* 手势操作地图,设置地图状态等操作导致地图状态开始改变。
* @param status 地图状态改变开始时的地图状态
*/
public void onMapStatusChangeStart(MapStatus status){
}
/**
* 地图状态变化中
* @param status 当前地图状态
*/
public void onMapStatusChange(MapStatus status){
}
/**
* 地图状态改变结束
* @param status 地图状态改变结束后的地图状态
*/
public void onMapStatusChangeFinish(MapStatus status){
}
};
二:经纬度转化为屏幕中的坐标
//LatLng p2 = new LatLng(39.94923, 116.397428);
LatLng p2 = mMarkerA.getPosition();
Point pt =mMapView.getMap().getProjection().toScreenLocation(p2);
System.out.println("转化为屏幕坐标 x:"+pt.x+" y:"+pt.y);
三:屏幕中坐标转化为经纬度
LatLng ll = mMapView.getMap().getProjection().fromScreenLocation(pt);
LatLng p2 = mMarkerA.getPosition();
Point pt =mMapView.getMap().getProjection().toScreenLocation(p2);
System.out.println("转化为屏幕坐标 x:"+pt.x+" y:"+pt.y);
LatLng ll = mMapView.getMap().getProjection().fromScreenLocation(pt);
System.out.println("转化的经纬度 x:"+ll.latitude+" y:"+ll.longitude);
四:得到手机屏幕,左上,左下,右上,右下经纬度
可以更具屏幕坐标转经纬度的方法轻松拿到左上,左下,右上,右下经纬度
1:得到屏幕坐标就是宽高
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int Max_X=dm.widthPixels;
int Max_Y=dm.heightPixels;
System.out.println("屏幕宽:"+Max_X+" 高:"+Max_Y);
Point pt = new Point();
pt.x=0;
pt.y=0;
LatLng ll = mMapView.getMap().getProjection().fromScreenLocation(pt);
System.out.println("左上角经纬度 x:"+ll.latitude+" y:"+ll.longitude);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
Point pty = new Point();
pty.x=dm.widthPixels;
pty.y=dm.heightPixels;
LatLng lly = mMapView.getMap().getProjection().fromScreenLocation(pty);
System.out.println("右下角经纬度 x:"+lly.latitude+" y:"+lly.longitude);
五:覆盖物角度旋转
使用方法rotate即可
LatLng p2 = new LatLng(39.94923, 116.397428);
OverlayOptions ooA = new MarkerOptions().position(p2).icon(bdA).rotate(-30);
mMarkerA = (Marker) (mBaiduMap.addOverlay(ooA));
六:设置中心的,缩放级别
//初始化地图
MapView mMapView = (MapView) findViewById(R.id.map);
BaiduMap mBaidumap = mMapView.getMap();
//设定中心点坐标
LatLng cenpt = new LatLng(29.806651,121.606983);
//定义地图状态
MapStatus mMapStatus = new MapStatus.Builder()
.target(cenpt)
.zoom(18)
.build();
//定义MapStatusUpdate对象,以便描述地图状态将要发生的变化
MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
//改变地图状态
mBaidumap.setMapStatus(mMapStatusUpdate);
七:覆盖物弹出层效果
1:可以使用Dialog使用悬浮弹出层效果
手机屏幕小一般这种方式更fit