【问题标题】:App unresponsive while Punching marker on google map在谷歌地图上打标记时应用程序无响应
【发布时间】:2014-12-04 08:55:35
【问题描述】:

我有一张地图,我想在上面放置标记。当有 5-10 个标记时,地图会快速加载,但当标记的数量不超过 30 个时,应用程序就会变得无响应。我应该使用异步任务打标记还是可以在地图完全加载后打标记。

【问题讨论】:

  • 您能否发布您的代码如何设置标记,您是否为标记设置任何自定义图标?

标签: android google-maps geolocation google-maps-markers marker


【解决方案1】:

您绝对应该使用异步任务。

不久前,我在使用应用程序 (maps api v1) 时遇到了同样的地图问题,但使用异步任务加载标记解决了该问题。

【讨论】:

  • 但是 google map api 说你不能把标记放在后台线程上。它必须在 UI 线程上
【解决方案2】:

如果您使用的是 Google Maps v2,并且使用的是非默认标记图标,则目前存在一个错误,即它们会导致速度过慢。请参阅 issue 7174this stackoverflow question。一种解决方法是使用默认图标标记。

【讨论】:

    【解决方案3】:

    你真的应该避免异步任务,尤其是对于高“n”个标记。 AsyncTasks 用于快速完成几秒钟的任务。

    我建议在地图初始化后在地图片段的 onCreateView() 上设置标记。

    如果您真的打算尝试某种后台线程,请查看 Executor Services 或 FutureTask

    ThreadPoolExecutor

    FutureTask

    【讨论】:

    • 对于有限数量的标记,ui线程是可以的,但随着标记数量的增加,ui线程也变得无响应
    • @Gaurav 绝对正确,但我想回答关于 AsyncTask 的问题。你试过 Executor Service 吗?
    • 还没有我会试着告诉你
    • 好吧,您可以以我的一个旧应用程序为例:bit.ly/1FuRM7C。当应用程序启动时,我加载所有标记,然后将它们添加到地图中。所有这些都是通过 AsyncTasks 完成的,我对此没有任何问题(maps api v2)。其他应用程序有超过 3000 个标记,并且考虑到应用程序仍然可以加载的信息量(我认为 :)))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2014-11-15
    • 2019-01-05
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多