不少應用的都會使用到地圖控件,咱們目前使用到地圖的場景是規劃無人機的飛行路線。最多見的是規劃一塊要飛行的區域,而後生成巡航的路線,最後用拍到的照片進行建模。有了模型後就能夠得到場地的一些數字化信息。 post
咱們的地圖控件在規劃路線時有不少的自定義 UI 須要展現,下面是咱們的規劃正射飛行的一張設計圖:性能
下面展現自定義 UI 和地圖源映射的過程:測試
總體的視圖結構大概就是這樣:設計
這個方案的優點是將自定義 UI 的實現與具體的地圖 SDK 隔離,當地圖源切換時,自定義 UI 能夠直接複用。可是這個方案也有一個固有缺陷:當地圖持續響應用戶交互,自定義的 UI 繪製會略有卡頓。3d
若是將 UI 經過地圖 SDK 添加到地圖上,自定義 UI 的繪製與地圖的渲染髮生在同一幀裏。所以任意一幀裏,自定義 UI 和地圖的位置老是對應的,從用戶的角度看就是圖形的變換很順滑。可是咱們的選擇的方案,自定義的 UI 變換前有兩個步驟:收到地圖區域變化通知,從新計算圖形在地圖上的平面座標。假設手機沒有性能問題,那麼地圖原生圖層的繪製頻率是 60Hz。當用戶進行連續縮放時,地圖的圖層每秒繪製 60 次。用戶感受很順滑。地圖區域變化的外界通知的頻率因爲性能考慮會低於 60Hz,所以即使從新計算圖形座標、繪製能夠在 1/60 秒完成,自定義 UI 的渲染頻率仍是會低於 60Hz。給用戶的體驗就是連續移動時,自定義 UI 沒有那麼跟手。cdn
至於自定義 UI 的繪製延遲是否能夠接受這就看各自的場景了。可是從個人測試結果看,雖然性能會差一些,可是大部分場景不會影響到用戶的使用。blog