Android com.google.Android.gms.maps.MapView animateCamera第一次不工作

Android com.google.Android.gms.maps.MapView animateCamera第一次不工作,android,google-maps,android-mapview,Android,Google Maps,Android Mapview,我有一个带有地图视图的活动。 我有一些代码来设置摄影机的动画,以在mapview中包含所有标记。 前两次我在开始活动后调用动画摄影机代码时,它不起作用。 从第三次开始,它工作正常。 对此有何解释 这是我的相关代码: if (filteredList.size() > 0) { LatLngBounds.Builder builder = new LatLngBounds.Builder();

我有一个带有地图视图的活动。 我有一些代码来设置摄影机的动画,以在mapview中包含所有标记。 前两次我在开始活动后调用动画摄影机代码时,它不起作用。 从第三次开始,它工作正常。 对此有何解释

这是我的相关代码:

            if (filteredList.size() > 0)
            {
                LatLngBounds.Builder builder = new LatLngBounds.Builder();
                for (Marker marker : markers)
                {
                    builder.include(marker.getPosition());
                }
                LatLngBounds bounds = builder.build();
                int padding = 50; // offset from edges of the
                                    // map in pixels
                CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
                map.animateCamera(cu);
            }
此代码在加载活动并从Web服务获取数据后被调用一次(但不起作用)。 当用户按下按钮(但仍然不工作)时,会再次调用它。 当用户按下按钮时,它会再次被调用更多次,并从那时起正常工作


谢谢您的帮助。

第一次按下按钮将地图的可见性设置为“从消失到可见”,因此它实际上尚未初始化。 归功于马辛·奥洛夫斯基。 我通过添加以下内容来修复它: addOnLayoutChangeListener(新的OnLayoutChangeListener() {

        @Override
        public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom)
        {
            if (firstMapLayout)
            {
                firstMapLayout = false;
                rebuildMap();
            }
        }
    });
其中“rebuildMap()”是包含摄影机动画代码的函数


谢谢大家。

我成功地使用了
onmapploadedcallback
,如下所示:

        mapView.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
        @Override
        public void onMapLoaded() {
            mapLoaded = true;

            // show location on map or execute any code that you need 
            // after the map loading
        }
    });

检查日志cat是否有任何错误消息,但在前两个时刻,您的映射似乎尚未初始化calls@MarcinOrlowski这不可能是问题,正如他在按下一个按钮后所说,它仍然不起作用。它可以。GMaps是异步初始化的。如果他在地图加载之前滥发这个按钮。它也可能与m无关aps——如果在第一次按钮单击后,由于任何原因,
filteredList
未正确初始化,则映射将不会更新。我还将查看填充
filteredList
的逻辑。