發現最近接手的專案跟百度地圖幹上了,從2014年的V3.xx版本到現在的最新版,踩了不知道沒踩過的多少坑。今天在維護一個2014年的老專案的時候,反饋有一條“指南針不顯示,旋轉後無法復位”。好吧,由於是老專案,第一個我們考慮的應該是版本問題了。
為什麼說要先考慮版本問題呢,因為百度坑啊,百度版本不相容啊 吧啦吧啦的。。(我這樣一直黑百度會不會被百度拉黑呢,我還一直想進大廠呢,哭瞎)。
廢話不多說,我把專案拉出來,換上了最新的jar包們,run走起。不出所料果然沒反應,有反應我還寫這篇文章幹啥。
於是在我做過的N個專案裡,我又扒出一個正常顯示指南針的碼田,一行行看了下去,emmmm,去你的看不下去。於是我又產生了一個新的想法,emmmm我TM腦洞還是足夠大:會不會是自定義圖層層疊導致的遮蓋呢?你別說,這玩意想起來還真有點道理。畢竟APP第一次安裝後,開啟頁面是有指南針的,後面退出這個activity以後,再也不會顯示了。我想肯定是我經過了各種操作本地快取了啥或者XXX的,一通什麼操作才導致的不顯示指南針。對沒錯肯定是我的問題。QAQ
於是我抽絲剝繭,把整個activity所有方法都註釋了以後:
果不其然,還是不行。難道是我註釋的不夠乾淨??也不是不可能嘛,人總是要懷疑下自己。這時候根據以往的經驗,我意識到了事情有點不對。怎麼我以前寫的就行呢!這TM不會是玄學問題吧?
新拉出來一個頁面,一個個測試。網上關於這些問題說的最多的解決方案也是唯一的解決方案就是:
首先,這個是預設開啟的,不需要我們手動開啟(很人性化QAQ)。那麼為什麼還是沒顯示出來呢?我是不指望看百度原始碼了
那麼,會不會和定位有關係呢?畢竟我之前的專案都是和定位相關。emmm不知道是我沒找到還是咋的,百度官方在定位的文件斌沒有提到指南針問題。畢竟這不是導航,沒有指南針也是無可厚非嘛。
在嘗試了N種搭配以後,通過不斷列印mBaiduMap.getUiSettings().isCompassEnabled()以後,我發現的確,預設指南針都是開啟的,那麼我就先把它關掉試試:
這時候依舊沒有出現指南針,那麼我們就多次嘗試嘛:在定位後會不會有騷操作呢?於是我在定位後又寫了一遍這個程式碼。果不其然,並沒有任何效果。那麼我們再開啟試試呢?
誒?真的是騷操作誒,靠腰哦。
注意一點,定位的最後一句,mLocClient.start();不可以去掉,親測。
總結一句:查閱了之前的程式碼也是地圖和定位相結合,但是並沒有發現與setCompassEnabled相關的欄位,所以這種坑,想要找到解決方法並不簡單。我判斷可能是由於地圖和定位是兩個團隊開發?所以裡面肯定在某些方面有些衝突不相容的現象,我們在初始化先關閉指南針,定位以後重新開啟就可以正常啦,如果有小夥伴也遇到這個問題,可以嘗試一下這個解決方案。