2013-07-24 54 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

現在是固定的。你可以谷歌和知道更多關於這一點。 –