我正在开发一个基于位置的 android 应用程序,它处理大量的覆盖项目。
背景: 我想在地图上显示很多实体。实体的坐标随着它们的位置变化而实时变化。对应于更新的位置,实体应在地图上更新。实体可以增长到大量。
实现 我有两个覆盖。一个用于 MyLocationOverlay 以显示用户位置,另一个用于 ItemizedOverlay 子类,其中包含我需要在地图上显示的所有实体。
问题 每当实体的位置发生变化时,相应的覆盖项就需要更新。问题是我不确定哪种方法是实现这一目标的最佳方法。我有这些选择
当我收到特定实体的位置时,我从地图中删除所有叠加层并重新添加叠加层。现在使用更新的位置创建了覆盖项之一。
List<Overlay> overlays = map.getOverlays(); overlays.removeAll(overlays); overlays.add(new MyOverlay(marker,this));
我为每个实体创建一个叠加层。这意味着我将创建 500 个叠加层,每个叠加层仅包含一个叠加项。我创建了一个 Overlay 类的子类,并添加了我自己的属性以清楚地识别实体并为每个实体创建一个。当我到达特定实体的位置更新时,我会迭代并获取特定的覆盖项,将其删除并添加一个具有更新位置的新项。
我不知道哪个是最好的使用性能明智的。
当实体的数量超过 500 或 1000 个时,我觉得为每个实体的每个位置更新(可能很频繁)删除所有并重新添加所有覆盖会变得相当开销。
同时,遍历相同数量的实体也可以是相等的开销。
任何关于选择哪个或更好的实现方式的建议将不胜感激。
/安迪