在Android地图上处理大型覆盖项目的最佳实践

在Android地图上处理大型覆盖项目的最佳实践,android,maps,android-maps,Android,Maps,Android Maps,我需要告诉用户附近的自动取款机在哪里。问题是银行是否有10000台自动取款机 当我使用地图进行网络编程时,我通常只在可视区域加载ATM。当用户进行平移或缩小时,我请求后端服务器提供更多ATM并重新绘制所有覆盖项。但我认为我们不能在移动设备上使用这种技术 如果我使用来自的技术,我会获得性能上的成功 处理这个问题的最佳方法是什么?我们知道有一些担忧: 装载所有自动取款机将消耗大量内存 在可视区域加载ATM可能会消耗大量的数据连接,因为用户需要平移。(我也不知道如何获得可见的坐标边框) 我做了一些实验

我需要告诉用户附近的自动取款机在哪里。问题是银行是否有10000台自动取款机

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

如果我使用来自的技术,我会获得性能上的成功

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

  • 装载所有自动取款机将消耗大量内存
  • 在可视区域加载ATM可能会消耗大量的数据连接,因为用户需要平移。(我也不知道如何获得可见的坐标边框)
  • 我做了一些实验。加载1000个覆盖项目(ATM)(1000个itemizedOverlay.addOverlayItem(anAtm)和1个populate())花费了5秒

    这样做有什么最佳实践吗?我真的希望谷歌能为开发者提供最佳实践


    谢谢

    您可以通过将接近的ATM分组到一个唯一点来过滤服务器发送回的ATM列表,从而实现搜索结果显示的规模依赖性。

    您可以通过将接近唯一点的ATM分组来过滤服务器发送回的ATM列表,从而实现搜索结果显示的缩放依赖性。

    您没有发布代码,因此我不知道您是否遵循我认为最好的方法:

    1-创建ItemizeOverlay

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

    3-调用填充()

    4-只有在完成所有这些之后,才应该将ItemizeOverlay添加到mapview.getoverlays()中

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

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


    祝你好运。

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

    1-创建ItemizeOverlay

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

    3-调用填充()

    4-只有在完成所有这些之后,才应该将ItemizeOverlay添加到mapview.getoverlays()中

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

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


    祝你好运。

    你可以限制服务器发送回的ATM位置数量?你听说过地图群集吗?“搜索这个关键词。这可能是另一种方法。”我想,我会像使用基于网络的谷歌地图一样使用边界检测。基于边界加载数据。谢谢。您可以限制服务器发送回的ATM位置的数量?您听说过地图群集吗?“搜索这个关键词。这可能是另一种方法。”我想,我会像使用基于网络的谷歌地图一样使用边界检测。基于边界加载数据。谢谢