可以在mapview中显示600个带有个性化图钉的poi而不会减慢地图的速度?

时间:2014-01-29 16:12:49

标签: android overlay android-mapview itemizedoverlay

我有一个带有600个pois的mapView,每个poi都显示相同的PIN。

当600个pois立刻显示时,地图的移动非常缓慢。

可以在不减慢地图移动的情况下显示所有这些内容吗?

这是我的代码的一部分:

我的引脚位图:

Bitmap marker= ResourceManager.getImageResourceByName(pinId).getBitmapOfWidth((int) (App.getWidth()*0.14));
                        d = new BitmapDrawable(marker);
                        d.setBounds(0 - d.getIntrinsicWidth() / 2, 0 - d.getIntrinsicHeight(), d.getIntrinsicWidth() / 2, 0);

我如何添加叠加层(我在异步任务中执行此操作):

this.itemizedOverlay.addOverlay(values[0]);

1 个答案:

答案 0 :(得分:0)

显示多个引脚将始终减慢地图速度。我在iOS应用程序中遇到了类似的问题,发现最好的办法是提出一种以更高的缩放级别对引脚进行聚类的方法,并具有在给定缩放级别显示给定视口的引脚的功能

查看一些分层聚类算法 - 我的解决方案涉及在引脚数据更新时运行聚类算法(在我的情况下通常不常见)。聚类算法占用了所有引脚的位置,并为我支持的N缩放级别生成了N组聚簇引脚。这些N个聚类点集中的每一个都具有最小和最大缩放级别,因此当地图以特定量放大时,应用程序将从相关缩放级别请求此视口的相关引脚。事实证明这一点非常有效 - 进行这些计算所涉及的工作远远少于显示数据集中每个引脚(并将它们转换为当前视口/缩放级别)所涉及的工作。

我担心我无法为此提供任何代码,但这绝对是我在地图上显示大量引脚的最佳方法。它的外观和感觉对用户来说要好得多。