当前的android google maps api要求在访问mapFragment.getMapAsync之前用OnMapReadyCallback调用GoogleMap。我以为一旦你有了GoogleMap就可以安全地打电话给moveCamera(),但我看到了一个IllegalStateException的车祸报告,上面写着Map size can't be 0. Most likely, layout has not yet occured for the map view
因此,我尝试添加一个ViewTreeObserver.OnPreDrawListener,并将moveCamera()调用移动到onPreDraw方法,因为文档中说“此时,树中的所有视图都已测量并给定了一个框架”。但我仍然看到一些有同样问题的坠机报告。我找不到这方面的任何文档-有一些问题,比如moveCamera with CameraUpdateFactory.newLatLngBounds crashes但是它们提前了getMapAsyncapi的日期,所以它们没有多大帮助。

最佳答案

我也有同样的问题。当应用程序尝试使用此相机更新更改相机时,此google地图库抛出异常,直到地图完成布局(为了使此方法正确确定适当的边界框和缩放级别,地图必须具有大小)。它描述了here
这是我的解决方案:

@Override
public void onMapReady(GoogleMap googleMap) {
    googleMap.setOnMapLoadedCallback(this);
}

@Override
public void onMapLoaded() {
    googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(…));
}

07-27 19:21