2

我有一种情况,我需要告诉用户附近的 ATM 机在哪里。问题是如果银行有 10000 台 ATM。

当我使用地图进行网络编程时,我通常只在可见区域加载 ATM。当用户进行平移或缩小时,我请求后端服务器提供更多的 ATM 并重新绘制所有覆盖项。但我认为我们不能在移动设备上使用这种技术。

如果我使用https://developers.google.com/maps/documentation/android/hello-mapview的技术,我会受到性能影响。

处理这个问题的最佳方法是什么?我们知道有一些担忧:

  1. 加载所有 ATM 会消耗大量内存。
  2. 当用户进行平移时,在可见区域加载 ATM 可能会占用大量数据连接。(我也不知道如何获得可见的坐标边框)

我做了一些实验。加载 1000 个覆盖项目 (ATM) (1000 x itemizedOverlay.addOverlayItem(anAtm); 和 1 x populate()) 花费了 5 秒。

这样做有什么最佳做法吗?我真的希望谷歌能给开发者最好的实践。

谢谢

4

2 回答 2

0

您可以过滤服务器发回的ATM列表,将靠近的ATM分组为唯一点,从而实现搜索结果显示的比例依赖性。

于 2012-08-30T12:03:30.897 回答
0

你没有发布你的代码,所以我不知道你是否遵循我认为最好的方法:

1-创建 itemizedOverlay

2-将所有项目(ATM)添加到 itemizedOverlay

3-调用填充()

4-毕竟,您应该将 itemizedOverlay 添加到 mapview.getoverlays()

如果您的内存中已经有 10000 ATM,那么执行前面的步骤应该几乎是瞬时的。移动或缩放地图时可能需要一些时间来重新绘制屏幕,​​并显示所有这些标记。

如果您从数据库中获取 ATM,那么我建议使用 AsynkTask 来避免收到 ANR 消息。

祝你好运。

于 2012-09-30T21:46:54.323 回答