我正在制作一张有 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];
}