我在iOS应用程序中使用Google Maps API。在会话结束时,地图缩小并捕获屏幕截图。不幸的是,在拍摄屏幕截图之前,地图通常没有时间加载缩放曝光的所有图块。
我看到Apple的MKMapView有一个mapViewDidFinishLoadingMap
代表。 Google API中是否提供了类似的内容?
答案 0 :(得分:6)
Google Maps SDK for iOS有一个名为mapViewDidFinishTileRendering的方法,在地图完成渲染时调用该方法。
-(void)mapViewDidFinishTileRendering:(GMSMapView *)mapView{
//TAKE THE SCREENSHOT HERE
}
另外,不要忘记设置代表。
答案 1 :(得分:2)
在Google Maps Javascript API中,您可以使用various UI events的事件监听器,例如tilesloaded
事件。
但是,Google Maps iOS SDK没有任何事件监听器。您必须使用GMSMapViewDelegate
委托方法来检测UI事件。对于您的情况,我认为mapView:idleAtCameraPosition:可能会对您有所帮助。
答案 2 :(得分:2)
iOS SDK有一个功能 mapViewSnapshotReady 你可以使用referansing protocol GMSMapViewDelegate
参考说明:
地图稳定时调用(加载图块,渲染标签,相机闲置) 和叠加对象已经渲染。
func mapViewSnapshotReady(_ mapView: GMSMapView) {
// map ready to use
}