在我的应用程序中我正在添加和删除注释到我的地图视图,但实际上即使我先添加新的注释,然后删除旧注释,也会有一个注释的闪烁
新的注释是从互联网上收到的,因此我不能将它们从新的数组中删除......
我的问题是它是如何解决眨眼行为以及如何避免这种情况?
我不想迭代注释并比较每个位置...... 所以我试图延迟删除并以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”是我的新注释数组)
答案 0 :(得分:2)
在删除注释后立即添加注释时会发生闪烁。如果您可以控制Web服务,请添加唯一的id
,检查地图上是否已存在具有该ID的注释,如果不存在,则仅添加新注释。如果您无法添加id
,请使用纬度和经度(可能是唯一的)进行检查。迭代它们并不昂贵。