App中使用百度地圖SDK的那些坑

近段時間有幾個App都多少與地圖有關,基於方便快捷的考慮,都用了百度地圖SDK,由此,開始了這一段的憂傷。。。

總的說來,百度地圖爲移動開發者們帶來了福音,幫助開發者方便、快捷的集成地圖相關服務,只是,在具體使用過程中也會發現不少坑和槽點。

也許是攤子大了,事情繁多雜亂,也許是帝國的注意力不在此,開發者們的反饋常常得不到及時有效的回覆和跟進處理,這裏一併吐槽下。

 

順序:時間倒敘(最近發現的列在前面)

先說iOS的吧

 

 

5、[_mapView setRegion:region animated:YES] 與 [_mapView viewWillAppear] 不能同時使用

v2.8.1 親測,如果多次調用 [_mapView setRegion:region animated:YES]; 就要註釋掉 [_mapView viewWillAppear]; 不然App直接crash,隱藏的大坑啊。。。

 

4、iPhone6適配不完整

v2.5.0就號稱適配iPhone6、iPhone6P,到v2.6.0了,對iPhone6適配依然不完整。

iPhone6+storyboard,下面總有一片空白

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=52786&page=1#pid139222

 

3、BMKPointAnnotation封裝太簡單

BMKPointAnnotation封裝太簡單(連常用的tag屬性都沒有,當一個地圖上有多個PointAnnotation時不好識別),通常都需要繼承並自定義,這裏有個不錯的教程,可供參考 http://blog.csdn.net/raoxudong/article/details/22196253

 

2、demo哥太粗心,iOS 8鍵類型寫錯

千盼萬盼,v2.5.0總算出來了,趕緊照着其demo更新,功能基本調好,但是在“系統設置-隱私-位置-app”處總是crash,最後發現竟然是百度寫demo的哥們太粗心,本應該是String的卻填寫了Boolean。

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=14354&highlight=ios8

 

1、iOS 8適配更新慢

蘋果於2014年9月17日正式向用戶推送iOS 8系統,而百度適配iOS 8的SDK v2.5.0直到10月21日才發佈,相隔一個多月,急壞了一批開發者。

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=13644&highlight=ios8

 

 

再來說說Android的

 

7、v4_1_0的SDK不兼容Android 5.0以下的系統

在Android 5.0以下的系統(如Android 4.1.2、Android 4.4.4)運行直接閃退,錯誤信息如下:java.lang.UnsatisfiedLinkError: Cannot load library: find_library[1203]: 164 'libBaiduMapSDK_base_v4_1_0.so' failed to load previously

或 java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "srand" referenced by "libBaiduMapSDK_base_v4_1_0.so"

這個確認是bug,已在v4_1_1的SDK中修復。

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=120744

 

6、OnMapLoadedCallback()有時不會調用/觸發

.setOnMapLoadedCallback(new OnMapLoadedCallback(){
			@Override
			public void onMapLoaded(){
				manager.zoomToSpan();
			};
		});

 

給地圖設置加載完成的回調後,onMapLoaded()有將近20%(初略估算,比如5次中發生一次)的機率不會調用/觸發。

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=89029

有一個曲線救國的方案,從4.1.0開始的SDK中出現了一個新的回調:OnMapRenderCallback(),可以將就着用。

 

5、導航SDK 2.0.0 基本是在倒退

除了4中所說的座標系對應不上的問題,連播放自定義語音的接口也沒有提供了(戰略收縮?),用戶使用體驗也打折扣,還不如V1.1.0的。

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=91557&extra=&qq-pf-to=pcqq.c2c

 

4、定位、地圖、導航 座標系對接不上

爲了應對Android5.0的SDK兼容問題,升級到最新SDK(導航SDK2.0+定位SDK6.0.5),卻發現個大坑:定位時 用的 bd09ll,在地圖上顯示都正常,導航時 卻只有GCJ02、WGS84、BD09_MC 可選,對應不上啊,工具類的轉換接口也只是轉換成bd09ll的,話說同一公司出的SDK, 定位、地圖、導航,能內部協調一下、統一座標系不?或者,至少也要方便轉換啊。。。

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=91379&extra=&qq-pf-to=pcqq.c2c

 

3、mBaiduMap.getProjection()有時爲Null

爲了解決2中的問題而更新到了最新版本(基礎地圖v3.4.0),卻有個地圖界面打不開了(app crash了),排查半天,原來是getProjection 有時爲空(可能換了機制,需要在地圖加載完成後才能用),加個判斷,纔算是好了。

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=84761&highlight=getProjection

 

2、marker有時會消失 (基礎地圖 V3.3.0)

這個確認是個bug,已在新版本(基礎地圖 v3.4.0)中修復。

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=81890

 

1、develop和release切換的問題

eclipse中調試時(直接Run As Android Application)用的是debug.keystore,正式簽名打包發佈時往往是用的另外的xxx.keystore,簽名文件不一樣,導致SHA1不一樣,百度LBS開放平臺上該應用的安全碼也就不一樣了,而百度API控制檯裏一款應用只能設置一個安全碼(不分開發和生產,只能讓一個版本正常工作),而在我們實際的迭代開發中,需要保持開發中的版本和正式發佈的版本都正常工作,爲此,我只好在百度開放平臺上創建了2個應用,分別對應開發中的版本和正式發佈的版本,汗~。

 

 

關於國際地圖

這是一個日益強烈的需求,現狀(2016年10月)是:官方web、官方App與開放平臺的SDK,百度基本都可用,高德的太粗糙,沒有實用價值。

高德君,你似乎落後了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章