2012-01-06 22 views
0

我開發了一個應用程序,該應用程序使用地圖視圖,該視圖在同一位置有多個註釋,但不會丟棄我提供的訂單註釋。我從數組中添加了註釋,但它沒有顯示相同的順序。我需要第一個對象[註釋]成爲該位置的頂部。當用戶點擊註釋時,它應該將第一個對象顯示爲標註。任何建議,以做同樣的事情。註解不會按照我提供的順序放在地圖視圖上

感謝 我已經嘗試過這種方法,但沒有運氣..

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 


for (MKAnnotationView *view in views) { 

    if ([[view annotation] isKindOfClass:[Annotation class]]) { 
     Annotation *customAnnotation = (Annotation*) [view annotation]; 
     if ([customAnnotation markerID]==0) 
      [[view superview] bringSubviewToFront:view]; 
     else { 
      [[view superview] sendSubviewToBack:view]; 
     } 
    } 
} 
} 
+0

http://stackoverflow.com/questions/1145238/how-to-define-the-order-of -dialapping-mkannotationviews/1213450#1213450 – Rayfleck 2012-01-06 15:38:27

回答

1

註釋可以以任意順序放添加,並且可以從該視圖以同樣的方式細胞是在添加或刪除表視圖。所以z層可以以你不想要的方式變化。

以下是一些可能對您有幫助的示例代碼。我有一個地圖顯示搜索結果的引腳。他們分爲正常結果和收藏夾。我希望收藏夾始終位於頂部或其他引腳上。我也有一個「直腸」來突出顯示選定的地圖引腳,並且我總是希望將它放在所有註釋之上。我使用此代碼將不同類型的註釋轉換爲正確的z層次順序:

- (void) mapView:(MKMapView *)aMapView didAddAnnotationViews:(NSArray *)views { 

    MKAnnotationView *theReticleView = nil; 

    for (MKAnnotationView *view in views) { 
     if ([[view annotation] isKindOfClass:[SearchResult class]]) { 
      SearchResult *result = (SearchResult*) [view annotation]; 
      if ([result.isFavorite boolValue]) { 
       [[view superview] bringSubviewToFront:view]; 
      } else { 
       [[view superview] sendSubviewToBack:view]; 
      } 
     } 
     else if ([[view annotation] isKindOfClass:[MapReticle class]]) { 
      theReticleView = view; 
     } 
    } 
    if (theReticleView != nil) 
     [[theReticleView superview] bringSubviewToFront:theReticleView]; 

} 
+0

嗨Draco,感謝您的快速回答,我已經嘗試過這種方法,但沒有運氣。當我點擊註釋以獲得標註時,它會向我展示除了我的註釋的第一個索引之外的內容。它應該給我看第一個註釋索引。 [一個地點,有很多註釋,當我點擊註釋時需要顯示最上面的註釋,目前沒有顯示。] – 2012-01-07 05:49:16

相關問題