当Android v2地图加载时检测

我正在编写一个应用程序,当用户按下button时,会在地区周围拍摄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); 

不幸的是,当拍摄快照时,地图偶尔会完成加载,所以最终会出现: 部分模糊的地图快照

那么,有没有什么办法来检测或设置一个监听器,当地图视图完成加载?

Solutions Collecting From Web of "当Android v2地图加载时检测"

OnMapLoadedCallback不会触发,直到地图上的贴图加载完毕。 只有一次,所以你必须打电话九次,以拍摄九个快照。

当你有一个参考地图设置callback。

 mMap.setOnMapLoadedCallback(this); 

当onMapLoaded事件触发时拍摄快照。

 @Override public void onMapLoaded() { if (mMap != null) { mMap.snapshot(this); } } 

有关详细信息,请参阅文档: https : //developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

祝你好运

**** 等待这个function被执行的历史。

更新:状态:固定标签:固定 – 2013年10月

问题5779评论#3通过schr … @ google.com:能够在地图完全加载/呈现时得到通知http://code.google.com/p/gmaps-api-issues/issues/detail? ID = 5779

在Google Maps Android API v2的最新版本中添加了地图加载的callback界面。

有关详细信息,请参阅文档: https : //developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

感谢大家出演5779和61675 Danny117

****编辑****

如果你来这里,请把这个问题列出来。 http://code.google.com/p/android/issues/detail?id=61675你的星星点击将激励谷歌在这个问题上前进。

地图更新13导致谷歌播放服务的问题,所以你不能使用新的OnMapLoadedCallback呢。 您可以根据它进行编译,但是map API会在logcat Google Play服务中生成一条错误消息。 需要4030500,但find了3266130

*编辑*全新的OnMapLoadedCallback

更新:状态:固定标签:固定Oct2013

问题5779评论#3通过schr … @ google.com:能够在地图完全加载/呈现时得到通知http://code.google.com/p/gmaps-api-issues/issues/detail? ID = 5779

在Google Maps Android API v2的最新版本中添加了地图加载的callback界面。

有关详细信息,请参阅文档: https : //developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

感谢大家为5779主演。Danny117

****以下是已弃用的*****

看起来像是等待更新解决scheme。 我点击了这个星星,因为我正在用我自己的api v2地图来开发这个function。

编辑***这是渲染地图时提出的新的callback。 每个人的访问请跟随链接和明星这个问题。 http://code.google.com/p/gmaps-api-issues/issues/detail?id=5779

***以前的snapshopcallback不会改变。 每个人的访问请跟随链接和明星这个问题。 http://code.google.com/p/gmaps-api-issues/issues/detail?id=5712

https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback

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

 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); } }); 

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

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