關於百度地圖上獲取屏幕中心點的位置,百度上沒有人專門整理信息,遇到了在這裏整理一下
BaiduMap.setOnMapStatusChangeListener(changeListener);
BaiduMap設置他的狀態改變的監聽,監聽中有個onMapStatusChangeFinish方法,在這裏,地圖拖動完成時進行回調,然後進行操作。代碼如下
private OnMapStatusChangeListener changeListener=new OnMapStatusChangeListener() {
@Override
public void onMapStatusChangeStart(MapStatus arg0) {}
@Override
public void onMapStatusChange(MapStatus arg0) {}
@Override
public void onMapStatusChangeFinish(MapStatus arg0) {
//此處進行操作
}
核心代碼是下面這句
LatLng latLng=mBaiduMap.getProjection().fromScreenLocation(p);
其中的p是屏幕上的一個點,也就是android.graphics.Point下的Point,導包的時候不要弄錯了,我這裏設置了地圖的中心點。代碼如下
int[] location = new int[2];
mMapView.getLocationOnScreen(location);
Point p=new Point(location[0]+mMapView.getWidth()/2, location[1]+mMapView.getHeight()/2);
//TODO 已經獲取到屏幕中心經緯度,可上傳或者地理轉碼
LatLng latLng=mBaiduMap.getProjection().fromScreenLocation(p);
總體放一下代碼
1、監聽變量
private OnMapStatusChangeListener changeListener=new OnMapStatusChangeListener() {
@Override
public void onMapStatusChangeStart(MapStatus arg0) {}
@Override
public void onMapStatusChange(MapStatus arg0) {}
@Override
public void onMapStatusChangeFinish(MapStatus arg0) {
int[] location = new int[2];
mMapView.getLocationOnScreen(location);
Point p=new Point(location[0]+mMapView.getWidth()/2, location[1]+mMapView.getHeight()/2);
//TODO 已經獲取到屏幕中心經緯度,可上傳或者地理轉碼
LatLng latLng=mBaiduMap.getProjection().fromScreenLocation(p);
Log.i("location",latLng.toString());
}
};
2、設置監聽
mBaiduMap.setOnMapStatusChangeListener(changeListener);
3、Over