2011-04-22 19 views
4

期間我需要更改AnnotationViewcenterOffset屬性時的縮放級別改變。我不想刪除並再次添加Annotations更新AnnotationView後/變焦

所以,我怎麼能訪問和縮放後更新AnnotationViews

對此的任何想法?

最好的問候, 基督教

回答

4

一個解決辦法是使用這些MKMapView方法:

- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect // iOS4.2+ only! 

檢索可見的註釋,然後使用:

- (MKAnnotationView *)viewForAnnotation:(id<MKAnnotation>)annotation; 

得到相應的視圖(如果第一個功能正常工作,應該永不返回nil)

那麼我想改變centerOffset應該做的工作,(再加上也許有些-[UIView setNeedsDisplay/Layout]強制重繪)

更改centerOffset取決於個zoomLevel聽起來很奇怪,但我猜你有你的理由:)

+0

感謝這個。我已經使用mapView.annotations屬性來獲取註釋(<4.2 depl。target)。爲了更新註釋,我需要重新分配座標..'setNeedsDisplay'等不起作用:'CLLocationCoordinate2D foo = annotation.coordinate; [註解setCoordinate:FOO]' 理由進行更改縮放級別時偏移:我們有它的3D建築物的地圖疊加層,想顯示出對屋頂的視覺體驗的註解。客戶端可以在後端提供偏移量。由於放大/縮小後尺寸不同,需要重新計算偏移量。 – cweinberger 2011-04-22 18:42:27

+0

啊我看到了,我知道這是有原因的,謝謝反饋:) – 2011-04-22 19:03:54