我有一个查询服务器的MKMapView,当中心发生变化时会显示一个MKAnnotations数组但是我遇到了重复的MKAnnotations问题,因为我读了它们并添加它们。
我正在考虑使用for来查看每个Annotation,如果它已经没有做任何事情,但我认为这不是解决此问题的最佳解决方案。
有什么想法吗?
编辑:我正在删除所有这些并再次添加它们,这会为用户产生一个轻弹,我不想发生这件事
答案 0 :(得分:1)
在您的注释中,您可以拥有一个属性来存储唯一的标识符,如主键。当您获得刷新的项目时,您可以搜索现有项目并添加(如果不存在)。
OR
您可以拥有本地可变数组并存储主键。搜索该数组并添加到数组并映射是否存在键。
在任何一种情况下,如果用户继续进行平移,您最终会在地图视图中添加许多注释。
确保使用以便您可以重复使用视图
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;
答案 1 :(得分:-1)
根据您的具体情况,最简单的方法是删除所有现有的,并添加所有查询的内容。
我在考虑每个人 带有for和if的注释 已经没有什么,但我认为 不是解决的最佳解决方案 此
你有什么特别的问题,这对你来说效果不好吗?
也许另一个更有趣的选择是将地图按照Google的方式划分为网格(缩放和网格x,y)来自服务器的查询应专门用于网格空间,或者一组网格空间 - 这样您就不会首先重新请求重复信息。它还可以让您更轻松地确定已加载的内容和内容。您可以在后台预先请求周围的网格空间,并在用户滚出“已加载”区域时仅加载新的网格空间。