5000 以上のピンを持つマップに取り組んでいます。領域を変更するたびに、ズームの程度に基づいてannotationViewsを追加または削除します。
唯一の問題はこれです(極端なテスト):
ピン間のスペースがほとんどない場合、コールアウトは上に移動しますが、赤いピンが上にあることがよくあります。
基本的な MKPinAnnotationView のみを使用しています。カスタム コールアウトはありません。MKAnnotationViews のAaron Z-ordering による Z-ordering-category の実装を試みましたが、役に立たなかったようです。
編集:
まだ解決していませんが、少し気になることがあります。
MapKit の記述が不十分です。MapView にはビューを並べ替える責任があるため、少なくとも選択したビューが一番上に表示されます。
おそらく、mapView が処理するには注釈が多すぎます。
複製方法
5000 の注釈を追加するだけです。
-(void)addAnnotations
{
NSMutableArray *annotations = [NSMutableArray array];
for(int i=0;i<5000;i++) {
CGFloat latDelta = rand()*0.125/RAND_MAX - 0.02;
CGFloat lonDelta = rand()*0.130/RAND_MAX - 0.08;
CGFloat lat = 59.189358;
CGFloat lng = 18.267839;
CLLocationCoordinate2D newCoord = {lat+latDelta, lng+lonDelta};
DTSAnnotation *annotation = [DTSAnnotation annotationWithCoord:newCoord];
[annotation setTitle:@"."];
[annotations addObject:annotation];
}
[[self mapView]addAnnotations:annotations];
}