moveCamera com CameraUpdateFactory.newLatLngBounds falha

Eu estou fazendo uso do novoAPI do Google Maps para Android.

Eu crio uma atividade que inclui um MapFragment. Na atividadeonResume Eu defino os marcadores no objeto GoogleMap e, em seguida, defino uma caixa delimitadora para o mapa, que inclui todos os marcadores.

Isso está usando o seguinte pseudo código:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
while(data) {
   LatLng latlng = getPosition();
   builder.include(latlng);
}
CameraUpdate cameraUpdate = CameraUpdateFactory
   .newLatLngBounds(builder.build(), 10);
map.moveCamera(cameraUpdate);

A chamada paramap.moveCamera() faz com que meu aplicativo trave com a seguinte pilha:

Caused by: java.lang.IllegalStateException: 
    Map size should not be 0. Most likely, layout has not yet 

    at maps.am.r.b(Unknown Source)
    at maps.y.q.a(Unknown Source)
    at maps.y.au.a(Unknown Source)
    at maps.y.ae.moveCamera(Unknown Source)
    at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub
        .onTransact(IGoogleMapDelegate.java:83)
    at android.os.Binder.transact(Binder.java:310)
    at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a
        .moveCamera(Unknown Source)
    at com.google.android.gms.maps.GoogleMap.moveCamera(Unknown Source)
    at ShowMapActivity.drawMapMarkers(ShowMapActivity.java:91)
    at ShowMapActivity.onResume(ShowMapActivity.java:58)
    at android.app.Instrumentation
        .callActivityOnResume(Instrumentation.java:1185)
    at android.app.Activity.performResume(Activity.java:5182)
    at android.app.ActivityThread
        .performResumeActivity(ActivityThread.java:2732)

Se - em vez donewLatLngBounds() método de fábrica eu usonewLatLngZoom() método então a mesma armadilha não ocorre.

É oonResume o melhor lugar para desenhar os marcadores no objeto GoogleMap ou devo desenhar os marcadores e definir a posição da câmera em outro lugar?

questionAnswers(19)

yourAnswerToTheQuestion