2014-05-12 11 views
0

我有一個MKOverlayView類的工作擴展與mapview委託觸發並完全執行 - mapView:viewForOverlay:委託方法。所以,從過時的類,離開我已經改變了我的MKOverlayView extention延長MKOverlayRenderer ...這樣做,但離開viewForOverlay方法到位工作正常....rendererForOverlay不被調用....從MKOverlayView更新到MKOverlayRenderer後

但是委託方法viewForOverlay被棄用好了,所以我用rendererForOverlay方法取代它是與非棄用API定位和它永遠不會被觸發...

MapView正確迷上了,(這是由viewForOverlay工作證明的委託,但是當我用rendererForOverlay替換這個方法時,它就是它的替代品,它永遠不會觸發......因此我的覆蓋圖不會被繪製,這使得n o感覺到我。

我非常茫然,工作版本和版本之間唯一不同的是這種方法。即使在我將課程從MKOverlayView擴展到MKOverlayRenderer擴展後,只要代理中存在viewForOverlay方法,覆蓋圖仍將繪製,它將被調用。但是現在我替換了方法nada的viewForOverlay委託方法。

下面是代碼:

此方法的類MapOverlayView正確是否延長MKOverlayViewMKOverlayRenderer,任何一個這種委託方法被調用,疊加呈現。

-(MKOverlayView*)mapView:(MKMapView*)mapView viewForOverlay:(id<MKOverlay>) overlay{ 
MyMapOverlay *mapOverlay = overlay; 
MapOverlayView *mapOverlayView = [[MapOverlayView alloc] initWithOverlay:mapOverlay]; 
return mapOverlayView; 
} 

對於這種方法,我要確保MapOverlayView一直延伸MKOverlayRenderer,但委託方法永遠不會被觸發。爲什麼會上面的方法已過時總是被調用和工作,但下面不正確的方法已過時從未被觸發?

-(MKOverlayRenderer*)mapView:(MKMapView*)mapView rendererForOverlay:(id<MKOverlay>) overlay{ 
MyMapOverlay *mapOverlay = overlay; 
MapOverlayView *mapOverlayView = [[MapOverlayView alloc] initWithOverlay:mapOverlay]; 
return mapOverlayView; 
} 
+1

方法名稱爲mapView:...不是MapView:... – manecosta

+0

有斑點的伴侶 – Pancho

+0

它是小寫字母代碼中的小寫字母,我在此處將其轉換爲錯誤...我將編輯它。 ..所以問題依然存在。 – user282172

回答

0

我發現當Overlay對象位於顯示地圖邊界內時,會調用rendererForOverlay方法。您需要將地圖滾動至疊加層應顯示的位置以觸發呼叫。

相關問題