【发布时间】:2015-01-29 03:02:34
【问题描述】:
我在我的 iOS 应用程序中使用 Google Maps API。在会话结束时,地图会缩小并捕获屏幕截图。不幸的是,目前地图通常没有时间在截取屏幕截图之前加载所有通过缩放暴露的图块。
我看到 Apple 的 MKMapView 有一个 mapViewDidFinishLoadingMap 代表。 Google API 中是否提供了类似的东西?
【问题讨论】:
标签: ios google-maps swift
我在我的 iOS 应用程序中使用 Google Maps API。在会话结束时,地图会缩小并捕获屏幕截图。不幸的是,目前地图通常没有时间在截取屏幕截图之前加载所有通过缩放暴露的图块。
我看到 Apple 的 MKMapView 有一个 mapViewDidFinishLoadingMap 代表。 Google API 中是否提供了类似的东西?
【问题讨论】:
标签: ios google-maps swift
Google Maps SDK for iOS 有一个名为 mapViewDidFinishTileRendering 的方法,当地图完成渲染时会调用该方法。
-(void)mapViewDidFinishTileRendering:(GMSMapView *)mapView{
//TAKE THE SCREENSHOT HERE
}
另外,别忘了设置委托。
【讨论】:
iOS SDK 有一个功能mapViewSnapshotReady可以使用引用协议GMSMapViewDelegate
参考说明:
地图稳定时调用(瓦片加载、标签渲染、相机空闲) 并且覆盖对象已被渲染。
func mapViewSnapshotReady(_ mapView: GMSMapView) {
// map ready to use
}
【讨论】:
在 Google Maps Javascript API 中,您可以为 various UI events 使用事件侦听器,例如 tilesloaded 事件。
但是,Google Maps iOS SDK 没有任何事件侦听器。您必须使用 GMSMapViewDelegate 委托方法来检测 UI 事件。对于您的情况,我认为mapView:idleAtCameraPosition: 可能会对您有所帮助。
【讨论】:
tilesloaded UI 事件,但在 iOS SDK 中没有。