我們如何確保註釋視圖以指定的順序/位置放置在地圖上?處理重疊的MKAnnotationView
我有一個情況,一個地址可以有多個註釋(在彼此之上)。例如,引腳編號1,2,3和4位於相同的地理位置。當地圖加載時,我希望Pin#1位於頂部,但無法確保Pin#1始終可見(位於頂部)。
環顧四周我找到了以下解決方案,但這些解決方案都不適合我。
1)。按照您想要的順序將註釋添加到地圖中。
根據我的經驗,這是行不通的!根據我的經驗,使用addAnnotations:
一起添加註釋或逐個添加註釋會生成相同的結果。註釋視圖的順序仍然是隨機的。
[self.mapView addAnnotations:allAnnotations];
產生相同的結果:
for (MyCustomAnnotation *annotation in allAnnotations) {
[self.mapView addAnnotation:annotation];
}
2)。使用bringSubviewToFront或sendSubviewToBack指定所有註釋的順序。
根據我的經驗,這是行不通的!例如,下面的代碼不會產生所要求的結果:
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
// .tag associated with each view specifies the order/hierarchy of annotation views
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"tag" ascending:YES];
NSArray *orderedAnnotationViews = [views sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
for (MKAnnotationView *annotationView in orderedAnnotationViews) {
[mapView sendSubviewToBack:annotationView];
}
}
3)。使用annotationView.layer.zPosition指定所有註釋的確切順序。
考慮一種情況,其中4個引腳重疊,例如,引腳1,2,3和4.這種方法的問題在於,敲擊特定的註釋引腳或以編程方式選擇它並不會將其帶到前面。 zPosition
是絕對的。每次選擇一個引腳時都可以更改它,但這並不理想。
zPosition屬性指定圖層的 位置的z軸組件。 zPosition旨在用於設置圖層相對於其兄弟圖層的視覺位置。不應該是 用於指定層同胞的順序,而是重新排序子層數組中的層 。
想法?
註釋的順序在點擊它們時發生更改。我的意思是對於註解組中的每個點擊,地圖將顯示不在頂部的註釋。是的註釋順序沒有解決。這裏的實驗很好。 – Kampai