从MapView添加和删除注释会导致闪烁

时间:2012-06-13 19:54:18

标签: iphone ios ipad annotations mkmapview

在我的应用程序中我正在添加和删除注释到我的地图视图,但实际上即使我先添加新的注释,然后删除旧注释,也会有一个注释的闪烁

新的注释是从互联网上收到的,因此我不能将它们从新的数组中删除......

我的问题是它是如何解决眨眼行为以及如何避免这种情况?

我不想迭代注释并比较每个位置...... 所以我试图延迟删除并以0.2秒结束。正是这种延迟没有明显的眨眼,但这根本不可取。

由于

    NSMutableArray *annotationsToRemove = [[NSMutableArray alloc] initWithArray:[_mapView annotations]]; 
    [annotationsToRemove removeObject:[_mapView userLocation]];
    [_mapView addAnnotations:locations];
    // [_mapView performSelector:@selector(removeAnnotations:) withObject:annotationsToRemove afterDelay:0.2];
    [_mapView removeAnnotations:annotationsToRemove];

(“locations”是我的新注释数组)

1 个答案:

答案 0 :(得分:2)

在删除注释后立即添加注释时会发生闪烁。如果您可以控制Web服务,请添加唯一的id,检查地图上是否已存在具有该ID的注释,如果不存在,则仅添加新注释。如果您无法添加id,请使用纬度和经度(可能是唯一的)进行检查。迭代它们并不昂贵。