iOS基於百度地圖的開發(5)——核心問題匯總

來源:互聯網
上載者:User

當前為iOS提供的SKD版本為1.2.1,這裡主要講一下這個版本存在的一些問題,以及開發注意事項。

1. BMKMapView是百度地圖類,當建立多個BMKMapView對象時,這些對象會共用一些資料(沒有仔細研究具體共用哪些資料),因此會產生以下問題:

    A. 當對其中一個BMKMapView通過手勢來進行放大、縮小、移動等操作時,其他的BMKMapView對象會自動進行放大、縮小、移動。

    B. 啟動應用程式時,首先顯示出來的BMKMapView可以得到使用者的當前位置,其他的BMKMapView可能要等一段時間或者完全無法得到使用者當前的位置。

2. 為瞭解決1.B中的問題,可以只使用一個BMKMapView對象,比如在兩個不同的UIView中共用同一個BMKMapView對象。此外,有一個方法可以基本上解決1.A的問題。假設UIView A和UIView B均有BMKMapView(可以為不同或同一個對象),在UIView A和UIVIew B之間進行切換時,記錄下各自當前BMKMapView的Frame,然後在顯示的時候再通過設定Frame來恢複到切換前的狀態。這個方法的缺點是,在切換很快的時候,ViewDidAppear不一定會被調用,ViewWillDisapper的調用順序不確定,不過可以滿足普通操作的要求。

3. BMKSearch提供了搜尋、位址解析等功能。百度通過回調來響應搜尋結果,關鍵的問題是,有時回調並不會被調用(個人感覺是BMKSearch之後,百度的SDK無法正確找到回呼函數,比如處於不同的線程等等)。為了能讓百度SDK正確找到回調,建議如下:

    A. 在沒有得到回調之前,不要釋放BMKSearch對象,最好做成全域對象。(必須)

    B. 在搜尋路線時,如果起始位置是通過經緯度來表示的,那麼節點資訊中除了設定經緯度pt資訊外,一定要設定name資訊(不可為空字串)。(必須)

    C. 不能同時進行多個搜尋。(必須)

    D. 在每次通過BMKSearch對象進行搜尋之前,最好是將其delegate設定為nil,然後進行release,然後再alloc,然後再進行搜尋。(強烈建議)

    E. 所有的搜尋的操作均不要通過委託或其他線程的回調等等來發起,應該是由本對象主動發起,並且本對象作為搜尋代理,這樣百度SDK才能正確找到回呼函數。(強烈建議)

4. 有時需要判斷目前使用者經緯度是否是在國內,可以通過BMKSearch的地址反解析之後的回調來判斷,如果返回的錯誤碼為BMKErrorResultNotFound,那麼有可能不在國內,因為其他的原因也可能導致返回此錯誤碼。

5. 其實,最好的解決方案是採用AutoNavi高德地圖api,如果是iOS6,那麼直接可以直接使用MKMapView,其採用的就是AutoNavi介面。目前AutoNavi介面不足之處是沒有步行路線,據說還在開發中,相信以後會支援的。

[未經作者許可 不得轉載]

http://blog.csdn.net/donhao/article/details/7823843

iOS基於百度地圖的開發(1)——使用者當前位置

iOS基於百度地圖的開發(2)——擷取POI

iOS基於百度地圖的開發(3)——地址搜尋

iOS基於百度地圖的開發(4)——路徑搜尋

iOS基於百度地圖的開發(5)——核心問題匯總

iOS基於百度地圖的開發(6)——google座標轉換成百度座標

iOS基於百度地圖的開發(7)——百度座標轉換成Google座標

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.