【问题标题】:Mapkit Annotations : remove old, add new and keep existingMapkit Annotations:删除旧的,添加新的并保持现有
【发布时间】:2012-08-30 13:50:10
【问题描述】:

我在地图视图上动态加载注释。当用户重新加载注释时,我想删除旧的(那些不再由 WS 返回的),添加新的(没关系),并保留现有的(如果我删除所有内容,有一个“眨眼”效果)。

这样做的正确和好方法是什么? 我打算这样做: 1.浏览已有的注解,去掉WS结果中没有的注解 2. 浏览新的,看看它们是否已经在地图上(并更新它们),如果没有,将它们添加到地图上。

对我来说,看起来有很多数组浏览(我们至少讨论了 100 个注释),我在想也许有一种更清洁、更快捷的方法?!

谢谢

【问题讨论】:

    标签: ios annotations mkmapview mapkit mkannotation


    【解决方案1】:

    100 并不多。不过,您只需要一个循环即可删除它们,如果您已经删除了所有不在新集合中的循环,则无需检查新循环是否存在。

    【讨论】:

    • 假设地图上有 1、2、3、4。用户调用 web 服务,它返回 3、4、5、6。我需要删除 1 和 2,我需要添加 5 和 6,但我不能添加 3 和 4,因为它们已经在这里.如果我做“addAnnotation”,这将是一个“眨眼”效果,真的不是“眼睛糖果”。
    • 你可以这样做。 for (旧列表中的 anno) { posInNewList = [newlist positionOf:anno]; if (posInNewList == -1) [oldList remove:anno]; else [newlist remove:anno];} 您需要找到一种在新列表中查找旧注释的有效方法。如果预计新列表长度比旧列表短得多,那么快速内部循环可能就可以了。这不会更新旧注释,但您可以很容易地添加它。关键是将它们从旧列表或同一循环中的新列表中删除。
    猜你喜欢
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2013-08-28
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多