百度地圖使用踩坑之屏幕坐標和地圖坐標的轉(zhuǎn)換

首先:關(guān)于屏幕坐標和地圖經(jīng)緯度轉(zhuǎn)換是最好是在

baidumap.setonmapstatuschanglistener里面的onMapstatuschangefinish回調(diào)函數(shù)里面調(diào)用最好?。偨Y(jié)如果使用百度地圖提供方法時遇到空指針,首先考慮此時地圖是否是已經(jīng)繪制完成,所以處理這類操作最好是在baidumap.setonmapstatuschanglistener里面的onMapstatuschangefinish回調(diào)函數(shù)里

坑:在onCreate中調(diào)用:baiduMap.getProjection();會報空指針異常,原因是baiduMap還沒有繪制完成

然后也許你會想了,既然在onCreate中獲取時為空,那我在onResume中獲取應(yīng)該行了吧,遺憾的告訴你還是不行


1.轉(zhuǎn)換的方法很簡單,百度地圖已經(jīng)提供方法:

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

2.獲取屏幕周圍的四個點坐標

// 地圖看得見的地方的左上角坐標

Point point1 = new Point();

point1.x = 0;

point1.y = MainActivity.statusBarHeight

+ getResources().getDimensionPixelSize(R.dimen.main_title);// 狀態(tài)欄高度加標題欄高度

// 地圖看得見的地方的左下角坐標

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);// 狀態(tài)欄高度加標題欄高度

// 地圖看得見的地方的右下角坐標

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,分別代表地圖上左上角,左下角,右上角,右下角,四點的中的地理經(jīng)緯度坐標!里面的MainActivity.WindowWidth;等等是在MainActivity里面獲得的屏幕寬高狀態(tài)欄等等高等等的數(shù)據(jù), 相信大家都知道怎樣獲取,而我設(shè)置的全局變量,所以在這里直接調(diào)用,測試了是可行的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容