2013-07-24 52 views
5

我正在开发基于GoogleMap的android应用程序。
我需要在地图上显示1000个标记。
目前我从SQLite数据库加载器中检索每个标记的纬度和经度,并在public void onLoadFinished(final Loader loader, final Cursor cursor)方法中添加标记。
尽管这种方法给用户带来了非常不好的体验,因为应用程序在添加标记时没有响应。
我如何将1000个标记添加到googlemap并保持我的应用程序响应?
因为我必须将标记添加到主UI线程上的地图上。将1000的标记添加到Android Googlemap

+4

https://code.google.com/p/android-maps-extensions/ –

+0

你有没有试过AsyncTask .. – Juliousraj

+0

我还没试过AsyncTask,但我不认为这将解决问题,因为我仍然需要添加在onPostExecute() – Hector

回答

8

一种可能的方法是只在地图的可见区域内添加Marker s。

实际上,你将不得不您的通话从onLoadFinished移动到addMarkeronCameraChangeonLoadFinished只能创建创建这些Marker小号需要的数据的列表。最简单的形式可能是List<MarkerOptions>

Android Maps Extensions Lalit Poptani在上述评论中提到的即使您不想使用群集,也可以为您处理该问题。您只需留下您的代码,喜欢它,只用这种扩展的lib取代谷歌地图API的Android v2之后拨打电话一样

googleMap.setClustering(new ClusteringSettings().enabled(false).addMarkersDynamically(true)); 

+0

OhMyGod谢谢链接到群集扩展,我虽然只存在JS API。 –

+1

@thibaultd这是我写的代码。还有另一种方法:https://github.com/twotoasters/clusterkraf –

0

您可以使用Spatial Lite提供者geoserver提供WMS地图。 在android中,你可以设置tile provider来使用这种瓷砖贴图。

+0

感谢您花时间回答我的问题。然而,“Spatial Lite”链接给了我一个404 – Hector

+0

现在是固定的。你可以谷歌和知道更多关于这一点。 –