【问题标题】:Uniqueness of MKAnnotationMKAnnotation 的唯一性
【发布时间】:2011-07-06 05:43:00
【问题描述】:

我有一个 MKMapView,它查询服务器并在中心更改时显示 MKAnnotations 数组,但我遇到了重复 MKAnnotations 的问题,因为我阅读并添加了它们。

我正在考虑使用 for 查看每个注释,如果它已经存在则什么也不做,但我认为这不是解决这个问题的最佳解决方案。

有什么想法吗?

编辑:我目前正在删除所有这些并再次添加它们,这会为用户产生一个轻弹,这是我不希望发生的事情

【问题讨论】:

    标签: ios cocoa-touch mkmapview mkannotation


    【解决方案1】:

    在您的注释中,您可以有一个属性来存储唯一标识符,如主键。当您获得刷新的项目时,您可以搜索现有项目并添加(如果不存在)。

    您可以拥有一个本地可变数组并存储主键。如果键不存在,则搜索该数组并添加到数组和映射中。

    在任何一种情况下,如果用户继续平移,您最终都会向地图视图添加许多注释。

    确保你使用,以便你可以重用视图

    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;
    

    【讨论】:

      【解决方案2】:

      基本选项

      根据您的情况,最简单的方法可能是简单地删除所有现有的,然后添加所有查询的。

      我正在考虑查看每个 带有 for 和 if 的注释 已经什么都不做了,但我认为 不是最好的解决方案 这个。

      您是否遇到了不适合您的特定问题?


      更多高级选项

      也许另一个更有趣的选择是按照 Google 的方式将地图拆分为网格(缩放和网格 x,y)来自服务器的查询应该专门针对网格空间,或一组网格空间 - 这样您就不会首先重新请求重复信息。它还可以让您更轻松地确定哪些内容已加载,哪些内容尚未加载。您可以在后台预先请求周围的网格空间,并且仅在用户滚动出“已加载”区域时才加载新的网格空间。

      【讨论】:

      • 这就是我目前正在做的事情,我正在删除所有这些,但这对用户来说是一个轻弹......我不喜欢
      • 那么检查您是否已经加载了该注释的点有什么问题?是不是太慢了,还是……?
      • 我可以检查一下,我只是问是否有更有效的方法(有些情况下有超过 500 个注释)
      • 网格(首先不请求重复信息)似乎是性能方面的理想案例。
      猜你喜欢
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多