如何确定 Google Maps Tiles 是不是已加载
Posted
技术标签:
【中文标题】如何确定 Google Maps Tiles 是不是已加载【英文标题】:How to Determine if Google Maps Tiles have Loaded如何确定 Google Maps Tiles 是否已加载 【发布时间】:2015-01-29 03:02:34 【问题描述】:我在我的 ios 应用程序中使用 Google Maps API。在会话结束时,地图会缩小并捕获屏幕截图。不幸的是,目前地图通常没有时间在截取屏幕截图之前加载所有通过缩放暴露的图块。
我看到 Apple 的 MKMapView 有一个 mapViewDidFinishLoadingMap
代表。 Google API 中是否提供了类似的东西?
【问题讨论】:
【参考方案1】:Google Maps SDK for iOS 有一个名为 mapViewDidFinishTileRendering 的方法,当地图完成渲染时会调用该方法。
-(void)mapViewDidFinishTileRendering:(GMSMapView *)mapView
//TAKE THE SCREENSHOT HERE
另外,别忘了设置委托。
【讨论】:
【参考方案2】:iOS SDK 有一个功能mapViewSnapshotReady可以使用引用协议GMSMapViewDelegate
参考说明:
地图稳定时调用(瓦片加载、标签渲染、相机空闲) 并且覆盖对象已被渲染。
func mapViewSnapshotReady(_ mapView: GMSMapView)
// map ready to use
【讨论】:
【参考方案3】:在 Google Maps javascript API 中,您可以为 various UI events 使用事件侦听器,例如 tilesloaded
事件。
但是,Google Maps iOS SDK 没有任何事件侦听器。您必须使用 GMSMapViewDelegate
委托方法来检测 UI 事件。对于您的情况,我认为mapView:idleAtCameraPosition: 可能会对您有所帮助。
【讨论】:
在地图缩放到适当比例后,我已经在使用这种方法来捕获屏幕截图。不幸的是,这不包括更新地图图块,我想知道是否真的有专门用于加载图块的替代方法。 Google Maps Javascript API 有tilesloaded
UI 事件,但在 iOS SDK 中没有。
嗯,太糟糕了。尽管如此,还是感谢您提供的信息。以上是关于如何确定 Google Maps Tiles 是不是已加载的主要内容,如果未能解决你的问题,请参考以下文章
Google Maps Places:如何检查所选地点是不是在特定城镇?
v3 Google Maps Geocoding API 是不是有代表准确性的字段?