J'utilise la nouvelle API Google Maps pour Android .
Je crée une activité qui inclut un MapFragment. Dans l'activité, onResume
je place les marqueurs dans l'objet GoogleMap, puis je définis un cadre de délimitation pour la carte qui comprend tous les marqueurs.
Cela utilise le pseudo code suivant:
LatLngBounds.Builder builder = new LatLngBounds.Builder();
while(data) {
LatLng latlng = getPosition();
builder.include(latlng);
}
CameraUpdate cameraUpdate = CameraUpdateFactory
.newLatLngBounds(builder.build(), 10);
map.moveCamera(cameraUpdate);
L'appel à map.moveCamera()
provoque le blocage de mon application avec la pile suivante:
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)
Si - au lieu de la newLatLngBounds()
méthode d'usine, j'utilise la newLatLngZoom()
méthode, le même piège ne se produit pas.
Est-ce onResume
le meilleur endroit pour dessiner les marqueurs sur l'objet GoogleMap ou dois-je dessiner les marqueurs et définir la position de la caméra ailleurs?