百度地图sdk获取手机屏幕左上右下的坐标经纬度
前段时间开发项目中,使用了baiduSdk,有一个是需求是获取手机屏幕的左上右下的经纬度,当时候正也是醉了,没怎么用过baidu地图SDK,然后就自己摸索咯,在此记录一下:
先说点小东西,百度地图去掉logo,以及缩放按钮:
View child = mBaiduMap.getChildAt(1);
if (child != null && (child instanceof ImageView || child instanceof ZoomControls)) {
child.setVisibility(View.INVISIBLE);
}
mBaiduMap.showZoomControls(false);
mBaiduMap.showScaleControl(false);
好了,咱们言归正传,接下来就来说如何去实现获取到手机屏幕的左上右下的经纬度,代码挺简单的,前提我们得获取到手机屏幕的宽高:
我这边是Fragment页面:
private LatLng getSite(int type) {
DisplayMetrics dm = new DisplayMetrics();
Point pt = new Point();
if (type == 1) {
//左上角
pt.x = 0;
pt.y = 0;
}
if (type == 2) {
//左下角
pt.x = 0;
pt.y = dm.heightPixels;
}
if (type == 3) {
//右上角
pt.x = dm.widthPixels;
pt.y = 0;
}
if (type == 4) {
//右下角
pt.x = dm.widthPixels;
pt.y = dm.heightPixels;
}
ll = mBaiduMap.getMap().getProjection().fromScreenLocation(pt);
return ll;
}
而且我们需要在mBaiduMap.getMap().setOnMapStatusChangeListener(this)中才能够获取到相对应的经纬度
longitude/latitude 经度/纬度
@Override
public void onMapStatusChangeStart(MapStatus mapStatus) {
}
@Override
public void onMapStatusChange(MapStatus mapStatus) {
}
@Override
public void onMapStatusChangeFinish(MapStatus mapStatus) {
getSite(1);
LogUtil.e("左上角经纬度为", "左上角经度 x:" + ll.latitude + " 左上角纬度 y:" + ll.longitude);
getSite(2);
LogUtil.e("左下角经纬度为", "左下角经纬度 x:" + ll.latitude + " y:" + ll.longitude);
getSite(3);
LogUtil.e("右上角经纬度为", "右上角经纬度 x:" + ll.latitude + " y:" + ll.longitude);
getSite(4);
LogUtil.e("右下角经纬度为", "右下角经度 x:" + ll.latitude + "右下角纬度 y:" + ll.longitude);
Tips
百度地图sdk的经纬度api,举个例子GeoPoint(int latitudeE6, int longitudeE6),这个api用给定的经纬度构造一个GeoPoint,我们会发现跟常规的经纬度是相反的,这个一定得小心!!!