检测Android v2地图何时加载

检测Android v2地图何时加载,android,maps,Android,Maps,我正在编写一个应用程序,当用户按下一个按钮时,它会在一个区域周围拍摄9张地图快照 在循环中,使用此选项移动和保存: map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mStartLat + (mMultiOffsetX + mWidth), mStartLng + (mMultiOffsetY + mHeight)), mZoom)); map.snapshot(this); 在onSnapshotReady中: fina

我正在编写一个应用程序,当用户按下一个按钮时,它会在一个区域周围拍摄9张地图快照

在循环中,使用此选项移动和保存:

map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mStartLat + (mMultiOffsetX + mWidth), mStartLng + (mMultiOffsetY + mHeight)), mZoom)); 
map.snapshot(this);
在onSnapshotReady中:

final String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() + String.format("/test_maps/map_%f_%f.png", Double.valueOf(mStartLat + (mMultiOffsetX * mWidth)), Double.valueOf(mStartLng + (mMultiOffsetY * mHeight)));
FileOutputStream fos = new FileOutputStream(new File(fileName));
bmp.compress(CompressFormat.PNG, 0, fos);
不幸的是,在拍摄快照时,映射偶尔会完成加载,因此最终会出现以下情况:


那么,是否有任何方法可以在地图视图完成加载时检测或设置侦听器?

尝试使用
ViewStub
类帮助您延迟加载地图。 您可以使用以下代码检测何时加载地图:

public void onShowMap(View v) {
    // where you put the MapView layout in ViewStub view
    ViewStub.setVisibility(View.VISIBLE);
}

OnMapLoadedCallback在地图上的分幅加载后才会启动。只触发一次,因此您必须调用它九次才能拍摄九张快照

当你对地图有一个引用时,设置回拨

mMap.setOnMapLoadedCallback(this);
当onMapLoaded事件激发时,拍摄快照

@Override
public void onMapLoaded() {
if (mMap != null) {
    mMap.snapshot(this);
}
}
有关更多信息,请参阅文档:

祝你好运

****等待此功能实施的历史记录。

更新: 状态:固定 标签:固定-2013年8月

schr..@google.com对5779问题的评论#3:当地图完全加载/渲染时能够收到通知

谷歌地图Android API v2的最新版本中添加了地图加载回调接口

有关更多信息,请参阅文档:

感谢大家主演了第5779期和第61675期 丹尼117

****编辑****

如果您来这里,请在本期中加上星号。 你的明星点击将激励谷歌在这个问题上采取行动。

地图更新13导致google play服务出现问题,因此您还不能使用新的OnMapLoadedCallback。您可以根据它进行编译,但MapAPI会在logcat Google Play服务中生成一条已过期的错误消息。需要4030500,但找到3266130

*编辑* 全新的onmapploadedcallback

更新: 状态:固定 标签:固定-2013年8月

schr..@google.com对5779问题的评论#3:当地图完全加载/渲染时能够收到通知

谷歌地图Android API v2的最新版本中添加了地图加载回调接口

有关更多信息,请参阅文档:

感谢大家主演了第5779期。 丹尼117

****以下内容不推荐使用*****

看起来这是一个等待更新的解决方案。我在自己的api v2地图中处理此功能时,为您单击了星星

编辑*** 这是渲染贴图时建议的新回调。 访问的每个人都请关注链接并用星星标记此问题。

***不会更改以前的snapshop回调。 访问的每个人都请关注链接并用星星标记此问题


我看到这个问题还没有解决。 不知道为什么,但对我来说,地图加载完毕后,OnCamerachenglistener会被调用。所以我只是用这个来检测地图何时完成加载

googleMap.setOnCameraChangeListener(new OnCameraChangeListener() {
        @Override
        public void onCameraChange(CameraPosition arg0) {
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
                    mStartLat + (mMultiOffsetX + mWidth), mStartLng
                            + (mMultiOffsetY + mHeight)), mZoom));
            map.snapshot(this);
        }
    });

此方法在移动相机时调用,而不是在完全渲染贴图时调用。不推荐使用的方法:@Deprecated public final void SetOnCamerach Angelistener(final GoogleMap.OnCamerach Angelistener var1)是的,不推荐使用。看,看,还有。我使用了
setonCameraideListener