在MapView上绘制数百个标记

3

我可以很容易地在地图上绘制叠加标记,但这个项目的要求是添加几百个叠加标记。显然,这会在各个地方引起ANR。

我不能使用AsyncTask来处理添加叠加标记,因为该任务无法访问视图。

那么,如何以不会引起ANR的方式将这些叠加层添加到MapView中呢?

或者说,我可以绘制的叠加标记数量的现实限制更加有限吗?


如果您正在绘制数千个标记,请考虑在地图中进行聚类。 - Reno
嗨,奥利,你做完了吗?我要在地图上标记200个点,请分享一个解决方案/想法。 - Paresh Mayani
1个回答

3
覆盖 AsyncTask 的 onPostExecute 和 onProgressUpdate 方法以便跳到 UI 线程。您可以在其中操纵您的 UI。记得在 doInBackground 方法中完成所有繁重的工作。试图启动几百个 AsyncTasks 不是一个好主意,因此建议使用一个队列,由固定数量的 AsyncTasks 消耗请求。下一个问题是处理用户操作地图时的性能。

我不明白你在建议什么。我有数百个项目要添加,你是建议我在onPostExecute还是onProgressUpdate中添加它们?我将我的代码移动到前者,但应用程序仍然像以前一样ANR。你是建议我将覆盖标记的添加分成块,并在每个进度更新中完成一些吗?我只使用一个AsyncTask来添加所有这些内容 - 我没有为每个内容触发一个(最少因为我收集到并发AsyncTasks的限制相当低)。 - Ollie C
更新用户界面应该是一个相当轻松的过程 - 因此这不应该涉及到您的数据检索过程。如果您希望在一个AsyncTask中完成所有工作,请使用publishProgress以批处理方式更新UI。 - Che Jami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接