其他针脚后面的标注弹出窗口

时间:2013-01-20 21:53:41

标签: ios ios6 mapkit mkannotationview

我正在使用超过5000个引脚的地图上工作。每当我更改区域时,我会根据缩放量添加或删除annotationViews。

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

Callout being eaten alive

当针脚之间的空间稍微增加时,标注会在顶部移动,但通常红色针脚位于顶部 我只使用基本的MKPinAnnotationView。没有自定义标注。 我确实试过通过Aaron Z-ordering of MKAnnotationViews实现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];
}

1 个答案:

答案 0 :(得分:3)

您可以通过在didSelect和didDselect地图视图委托方法中为视图设置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
    }