2014-03-18 17 views
6

我的工作在很大程度上基於地圖的一個應用程序,和我使用MBXMapKit框架(建在MapKit),以便在我的MapView而不是默認的蘋果地圖的自定義顯示Mapbox地圖圖塊。但是,雖然Apple的地圖是矢量圖,但Mapbox仍然是柵格圖像拼貼,所以它們被MBXMapKit框架顯示爲覆蓋圖。MKOverlayRenderer比MKOverlayView更差嗎?

這是一切都很好,直到我去畫使用MKOverlay地圖上的折線。據我瞭解,前期的iOS 7,你將提供一個MKOverlayView,其將繪製到地圖的MapView代表,但是現在的iOS 7,已經贊成MKOverlayRenderer被棄用,而如果我理解正確,功能比較像在地圖上顯示排序,在那裏我直接拉進與結果的上下文的drawRect(我知道這不正是它是如何工作的,但問題是,我不再有機會獲得一個普通的舊UIView,這是我的問題出現在哪裏)。

第一個問題是,它似乎是,當我的疊加繪製地圖,它的拉磚接一個區塊。這很好,除了疊加拼貼看起來與底層Mapbox映像拼貼合成。這樣可以清楚地看到一個3或4個點的簡單多段線在A7 iPad Air上進行實時渲染需要半秒鐘的時間,並且您可以看到它在「塊」中顯示,因爲每個tile都會重新繪製。它也因爲某些原因導致所有未受影響的Mapbox磁貼重新加載(它們全部閃爍一秒鐘)。顯然,從用戶體驗的角度來看,這看起來像一個笑話,完全不能接受。

第二個問題是,因爲我不再像我在iOS 6中那樣可以訪問UIView,所以我沒有看到如何爲覆蓋層設置動畫效果 - 我想要的是淡化折線而不是立即顯示它(儘管在這一點上,我會立即展示整個事物,看它是否像一個點陣打印機吐出一樣平鋪,但你明白了我的觀點)。

所以我的主要問題是,我是否缺少某些東西,或者是MKOverlayRenderer FAR比MKOverlayView更不靈活和有用嗎?從邏輯上講,您希望能夠將地圖上的圖層視爲可以操作的單個對象,將事件綁定到該地圖上等,而不是將某些柵格像素數據刻錄到地圖中,並且永遠不會再修改或與之交互(而不是重新繪製整個事物),並且threads like this似乎表明蘋果已經基本上消除了使用覆蓋的許多事情的能力,您可以很容易地做到這一點。

由於MKOverlayView現在已被棄用,因此相應的委託方法不再叫,有沒有解決這些問題?現在,由於性能問題和缺乏動畫能力,我無法將它用於生產應用程序。

編輯:我在繪製MKOverlay時注意到的另一個性能問題是,它會影響繪圖發生時發生的其他動畫 - 當我點擊地圖註記時,在折線渲染開始的同時,工具提示會彈出打開動畫 - 果然,渲染導致工具提示動畫丟幀。

回答