Tôi đang sử dụng API Google Maps mới của Android .
Tôi tạo một hoạt động bao gồm một MapFragment. Trong hoạt động, onResume
tôi đặt các điểm đánh dấu vào đối tượng GoogleMap và sau đó xác định một hộp giới hạn cho bản đồ bao gồm tất cả các điểm đánh dấu.
Điều này đang sử dụng mã giả sau:
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ệnh gọi map.moveCamera()
khiến ứng dụng của tôi gặp sự cố với ngăn xếp sau:
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)
Nếu - thay vì newLatLngBounds()
phương pháp nhà máy, tôi sử dụng newLatLngZoom()
phương pháp thì bẫy tương tự không xảy ra.
Đây có phải là onResume
nơi tốt nhất để vẽ các điểm đánh dấu vào đối tượng GoogleMap hay tôi nên vẽ các điểm đánh dấu và đặt vị trí máy ảnh ở một nơi khác?