【问题标题】:GoogleMap: Edit markers and polylinesGoogleMap:编辑标记和折线
【发布时间】:2013-03-20 01:44:56
【问题描述】:

我从我的服务器获取了一个很长的、可变的Markers 和Polylines 列表。在某些情况下,Markers 必须更改其图标,Polylines 必须更改其颜色。

我的对象有 id,所以我应该能够知道我必须更新哪个折线/标记。但是,标记和折线没有setId()getId() 方法,它们会在服务器请求时动态更新(和添加)。

我曾考虑使用HashMap<Integer, Marker>HashMap<Integer, Polyline> 来了解我应该删除然后添加哪些项目。我想到了这个:

  • 我收到了一件物品。我得到了它的 ID。
  • 我在正确的HashMap 中查询具有相同 ID 的项目。
  • 如果HashMap不返回null,我调用Marker.remove()Polyline.remove(),然后我从HashMap中删除该项
  • 现在hashMap.get(id) 无论如何都应该返回null,所以我在GoogleMap 中绘制Polyline / Marker 将项目添加到HashMap

但在我开始实施之前,我想知道是否有任何不涉及使用巨型 HashMaps 的方法来做到这一点。

有没有其他方法可以在不使用HashMaps、SparseArrays 或类似的东西的情况下实现此行为?

【问题讨论】:

    标签: android hashmap google-maps-api-2


    【解决方案1】:

    我只使用过一次适用于 Android 的 Google Map API,但我很确定,在检查了与之相关的文档后,这应该可以添加一些侦听器。

    您能否提供信息应在哪些条件下更改?例如,如果单击时标记发生变化,则可以使用 GoogleMap.OnMarkerClickListener https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener

    无论如何,如果你有标记的引用,带有一个 Java 变量,你不能改变那个信息吗?或者简单地说,当你所说的这种“条件”发生时,你不能清除地图上的标记并再次添加它们吗?您不会有相同的标记,但结果将是相同的。当标记已经附加到地图上时,恐怕您无法修改它们,但您可以尝试一下。

    【讨论】:

    • 当服务器决定它(并且它相当频繁地决定它)时,信息通过套接字发送,客户端必须更新 UI。此外,有时应用程序还会向服务器询问信息(因为它需要更新,因为信息太旧,或者因为用户请求它),我们必须更新标记图标和折线颜色。清除标记并重新绘制它们是我正在做的。这不是一个好的解决方案,它很迟钝,而且用户界面感觉邋遢和缓慢。当地图上显示超过 500 个对象时,这不是一个好主意。
    • 您是否尝试过我告诉您的其他方法?要么使用侦听器(某些侦听器可能对您的需求有用)要么使用对标记的引用?我现在不记得您是否可以编辑标记并查看地图中的效果...
    • 我正在检查您的问题,您唯一能做的就是您现在正在做的事情。您必须清除标记并重新绘制它们。所以我的建议是减少更新请求的数量,或者增加更新请求之间的时间。我猜您正在使用 ItemizedOverlay 来附加所有叠加层,不是吗?
    • 自从我开始使用 API V2 以来,我根本没有使用过任何 Overlays。 GoogleMap.addMarker()、GoogleMap.addPolyline() 和 GoogleMap.addPolygon() 是我所需要的。
    • 你能试试叠加层吗?我不知道在你所说的这些方法下发生了什么,但我很确定,覆盖“系统”非常有效。一开始,我使用的是每个标记的叠加层,这对于重绘和 Android 内存来说很痛苦。将所有标记附加到一个简单的叠加层上,效果非常好。我使用的是不同的 Map API,但我在地图上绘制了数千个标记,而且只需不到一秒钟的时间……我无法想象你的要求比我多,所以它必须是使用 Google Map API 的有效方法...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    相关资源
    最近更新 更多