我正在开发一个基于GoogleMap的
Android应用程序.
我需要在地图上显示1000个标记.
目前,我从sqlite数据库加载器中检索每个标记的纬度和经度,并在public void onLoadFinished(最终的Loader加载器,最终Cursor游标)方法中添加标记.
这种方法虽然提供了非常糟糕的用户体验,因为当我添加标记时应用程序没有响应.
如何在googlemap中添加1000个标记并保持我的应用程序响应?
因为我必须在主UI线程上将标记添加到地图.
我需要在地图上显示1000个标记.
目前,我从sqlite数据库加载器中检索每个标记的纬度和经度,并在public void onLoadFinished(最终的Loader加载器,最终Cursor游标)方法中添加标记.
这种方法虽然提供了非常糟糕的用户体验,因为当我添加标记时应用程序没有响应.
如何在googlemap中添加1000个标记并保持我的应用程序响应?
因为我必须在主UI线程上将标记添加到地图.
解决方法
一种可能的方法是仅在标记落入地图的可见区域时添加标记.
实际上,您必须将调用addMarker从onLoadFinished移动到onCameraChange,而onLoadFinished只需创建创建这些标记所需的数据列表.在最简单的形式中,这可能是List< MarkerOptions>.
Lalit Poptani在上面的评论中提到的Android Maps Extensions可以为你处理,即使你不想使用群集.你只需保留你的代码,只需拨打电话即可
googleMap.setClustering(new ClusteringSettings().enabled(false).addMarkersDynamically(true));
用此扩展程序lib替换Google Maps Android API v2之后.