我正在使用超过5000个引脚的地图上工作。每当我更改区域时,我会根据缩放量添加或删除annotationViews。
唯一的问题是这个(极端测试):
当针脚之间的空间稍微增加时,标注会在顶部移动,但通常红色针脚位于顶部 我只使用基本的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];
}
答案 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
}