2012-01-25 33 views
2

我已經爲一堆位置設置了MKMapViewMKAnnotationView s。我設置了一個異步請求,該請求會在任何給定時間返回屏幕上給定區域內的位置,並在用戶拖動地圖時發出另一個請求。iOS MKAnnotationView重複滴下而不是重複使用針

但是,引腳會落在已存在引腳的位置,而不是重新使用已存在的引腳。我認爲行我viewForAnnotation方法:

MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"Pin"]; 


if(pinView == nil) 
{ 
    pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Pin"] autorelease]; 
    [pinView setAnimatesDrop:YES]; 
} 
else 
{ 
    [pinView setAnnotation:annotation]; 
} 

會照顧它,但它沒有。也許我誤解了這些代碼行的目的。

任何建議,非常感謝!很明顯,我不想在地圖上留下多餘的註釋,並且非常感謝任何幫助。

回答

1

您將不得不查看已經在地圖上的註釋,並確定服務器的引腳是否已經放置。如果你有一個唯一的ID你可以使用它,或者比較每個引腳的經度和緯度。

你寫的代碼的目的是這樣的:創建視圖是很昂貴的,所以當一個pin不可見時,它的視圖可以被回收並重新用於另一個註解。

+0

太棒了,我只是比較了自定義註釋的一些特質。謝謝! – Mason