Mapas android carga asincrónica de elementos de superposición

Tengo una vista del mapa con miles de elementos que quiero cargar en él. obviamente no puedo cargarlos todos cuando se crea la vista.

Supongo que tengo que cargarlos asincrónicamente de acuerdo a lo que se muestra en la actualidad.

¿Cómo puedo cargar sólo los elementos localizados en la parte del mapa que aparece en la pantalla?

Utilice AsyncTask para cargar las capas individuales por pantalla. Obtenga el Lat / Long del mapa visible actualmente usando MapView api. En el backend enviarles el lat / largo cuadro delimitador para obtener los elementos que desea. Tan aproximadamente de la memoria sería algo como:

public class LoadMapItems extends AsyncTask<Integer,Integer,List<ItemizedOverlay>> { private MapView view; public LoadMapItems( MapView view ) { this.view = view; } public List<ItemizedOverlay> doInBackground( Integer... params ) { int left = params[0]; int top = params[1]; int right = params[2]; int bottom = params[3]; return convertToItemizedOverlay( someService.loadSomething( left, top, right, bottom ) ); } private List<ItemizedOverlay> convertToItemizedOverlay( List<SomeObject> objects ) { // ... fill this out to convert your back end object to overlay items } public void onPostExecute(List<ItemizedOverlay> items) { List<Overlay> mapOverlays = mapView.getOverlays(); for( ItemizedOverlay item : items ) { mapOverlays.add( item ); } } } // somewhere else in your code you do this: GeoPoint center = someMap.getMapCenter(); new LoadMapItems( someMap ).execute( center.getLongitude() - someMap.getLongitudeSpan() / 2, center.getLatitude() - someMap.getLatitudeSpan() / 2, center.getLongitude() + someMap.getLongitudeSpan() / 2, center.getLatitude() + someMap.getLatitudeSpan() / 2); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.