Ios 其他接点后面的标注弹出窗口

Ios 其他接点后面的标注弹出窗口,ios,ios6,mapkit,mkannotationview,Ios,Ios6,Mapkit,Mkannotationview,我正在绘制一幅有5000多个图钉的地图。每次更改区域时,我都会根据缩放程度添加或删除注释视图 唯一的问题是(极端测试): 当插脚之间的空间很少时,标注会移动到顶部,但红色插脚通常会移动到顶部。 我只使用基本的MKPinAnnotationView。没有自定义标注。 我确实尝试过实现Aaron的Z-ordering-category,但似乎没有帮助 编辑: 我还没有解决它,但我确实有一些想法 MapKit写得很差。MapView有责任对视图进行排序,以便至少选定的视图位于顶部 也许mapView

我正在绘制一幅有5000多个图钉的地图。每次更改区域时,我都会根据缩放程度添加或删除注释视图

唯一的问题是(极端测试):

当插脚之间的空间很少时,标注会移动到顶部,但红色插脚通常会移动到顶部。
我只使用基本的MKPinAnnotationView。没有自定义标注。 我确实尝试过实现Aaron的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];
}
-(void)添加注释
{
NSMutableArray*注释=[NSMutableArray];

对于(int i=0;i您可以通过在didSelect和didSelect映射视图委托方法中设置视图的zPosition来解决此问题:

public func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!)
    {
        view.layer.zPosition = 0
    }

    public func mapView(mapView: MKMapView!, didDeselectAnnotationView view: MKAnnotationView!)
    {
        view.layer.zPosition = -1
    }

一个很难解决的方法是添加mapView:didSelectAnnotationView:并调用[view.superview将SubViewsToFront:view];然后将注释视图推回到mapView:viewForAnnotation:中。当您添加注释时,您应该将这些管脚聚集在一起,很难选择一个。感谢您提供的好提示!