Android Maps V2: El relleno de polígono desaparece al alejar el zoom

Estoy tratando de mostrar múltiples polígonos en mi MapView, algunos de ellos se superponen y tienen diferentes colores. Cuando los agrego todo parece bueno, pero tan pronto como alejo, muchos (no todos) de los polígonos dejan de ser llenados. El zoom hacia adelante y hacia atrás y desplazamiento a veces llena algunos de ellos de nuevo, pero parece ser comportamiento al azar.

El código para agregar los polígonos:

clearAreas(); for (Area area: areas) { for (List<LatLng> subArea: area.getSubAreas()) { mAreaPolygons.add(getMap().addPolygon( new PolygonOptions() .strokeWidth(2.0f) .zIndex(++zIndex) .strokeColor(area.getColor()) .fillColor(area.getTransparentColor()) .addAll(subArea))); } } 

Entiendo que (de acuerdo con la documentación) un polígono no será llenado si su geometría no se especifica correctamente. He intentado agregar los puntos en el sentido de las agujas del reloj y en el sentido contrario a las agujas del reloj, no hace ninguna diferencia.

¿Puede alguien explicar este comportamiento?

Actualización : Si el depurador está conectado, todo funciona perfectamente! Los polígonos están llenos y permanecen llenos cuando se aleja. Tan pronto como separo el depurador, los polígonos comienzan a perder su relleno de nuevo. ¿Que está pasando aqui?

Actualización # 2 : El problema aparece en mi Galaxy S3. Sorprendentemente, funciona en un dispositivo más lento, más antiguo! Desde adjuntar un depurador hace que la aplicación se vuelve muy lento, tal vez hay algún tipo de conexión aquí?

Muchas gracias, Marco

Esto huele a roscar si lo que has dicho en tus dos actualizaciones es cierto. En algún lugar tienes problemas de segmentación. Con sólo el fragmento de código que has proporcionado, nada parece fuera de lugar, pero se requiere un examen del resto de su código para averiguar esto. Lo más probable es que la llamada a dibujar estos polígonos se inicie antes de que la vista esté lista para ser dibujada. Sin ver nada, sugeriría algo a lo largo de estas líneas para acercarse a una solución:

 mMap.setOnCameraChangeListener(new OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition pos) { if (pos.zoom != currentZoom) { mMap.post(new Runnable() { public void run() { // TODO: call the method that wraps the code you provided }); } }); 

Lo que esto hará es llamar a la Runnable que proporcionó aquí después de que las vistas se hacen renderizado. Esto puede no funcionar como se pretende en la vista de mapa, es posible que tenga que publicarlo en una cola diferente o realizar una publicación diferida. No estoy familiarizado con el marco del mapa para saber con seguridad que esto lo solucionará, pero definitivamente suena como que hay problemas de subprocesos aquí.

  • ¿Cómo obtener el nombre de la ciudad de la latitud y la longitud en la brecha telefónica?
  • Crear un archivo GPX desde GeoPoints
  • Ubicación en proyecto jónico para android
  • Cómo tamaño de los iconos de marcadores personalizados para Android Google Maps v2?
  • ¿Necesito diferentes claves SHA1 para realizar mapas de Google
  • Escuchar nivel de zoom en google maps v2 en android
  • Cómo dibujar etiquetas únicas en overlayitem de mapview en android
  • Agregar Google Maps API V2 en un fragmento
  • ¿Cómo detectar constantemente las ubicaciones de los marcadores cercanos desde la ubicación actual en Google Maps android?
  • Localización fuera de línea basada en la aplicación Android
  • En evento de zoom para google maps en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.