c语言经纬度转换成屏幕坐标,百度地图使用踩坑之屏幕坐标和地图坐标的转换...

首先:关于屏幕坐标和地图经纬度转换是最好是在

baidumap.setonmapstatuschanglistener里面的onMapstatuschangefinish回调函数里面调用最好!(总结如果使用百度地图提供方法时遇到空指针,首先考虑此时地图是否是已经绘制完成,所以处理这类操作最好是在baidumap.setonmapstatuschanglistener里面的onMapstatuschangefinish回调函数里)

坑:在onCreate中调用:baiduMap.getProjection();会报空指针异常,原因是baiduMap还没有绘制完成

然后也许你会想了,既然在onCreate中获取时为空,那我在onResume中获取应该行了吧,遗憾的告诉你还是不行

1.转换的方法很简单,百度地图已经提供方法:

Point p =baiduMap.getProjection().toScreenLocation(carLatLng);

2.获取屏幕周围的四个点坐标

// 地图看得见的地方的左上角坐标

Point point1 = new Point();

point1.x = 0;

point1.y = MainActivity.statusBarHeight

+ getResources().getDimensionPixelSize(R.dimen.main_title);// 状态栏高度加标题栏高度

// 地图看得见的地方的左下角坐标

Point point2 = new Point();

point2.x = 0;

point2.y = MainActivity.WindowHeight

- getResources().getDimensionPixelSize(R.dimen.main_search);// 屏幕高度减去搜索栏高度

// 地图看得见的地方的右上角坐标

Point point3 = new Point();

point3.x = MainActivity.WindowWidth;

point3.y = MainActivity.statusBarHeight

+ getResources().getDimensionPixelSize(R.dimen.main_title);// 状态栏高度加标题栏高度

// 地图看得见的地方的右下角坐标

Point point4 = new Point();

point4.x = MainActivity.WindowWidth;

point4.y = MainActivity.WindowHeight

- getResources().getDimensionPixelSize(R.dimen.main_search);// 屏幕高度减去搜索栏高度

LatLng latlng1 = mBaiduMap.getProjection().fromScreenLocation(point1);

LatLng latlng2 = mBaiduMap.getProjection().fromScreenLocation(point2);

LatLng latlng3 = mBaiduMap.getProjection().fromScreenLocation(point3);

LatLng latlng4 = mBaiduMap.getProjection().fromScreenLocation(point4);

LatLngBounds.Builder b=new LatLngBounds.Builder();

b.include(latlng1);

b.include(latlng2);

b.include(latlng3);

b.include(latlng4);

LatLng latlng_center=b.build().getCenter();

latlng1,latlng2,latlng3,latlng4,latlng_center,分别代表地图上左上角,左下角,右上角,右下角,四点的中的地理经纬度坐标!里面的MainActivity.WindowWidth;等等是在MainActivity里面获得的屏幕宽高状态栏等等高等等的数据, 相信大家都知道怎样获取,而我设置的全局变量,所以在这里直接调用,测试了是可行的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值