【问题标题】: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 中是否提供了类似的东西?

【问题讨论】:

    标签: ios google-maps swift


    【解决方案1】:

    Google Maps SDK for iOS 有一个名为 mapViewDidFinishTileRendering 的方法,当地图完成渲染时会调用该方法。

    -(void)mapViewDidFinishTileRendering:(GMSMapView *)mapView{
        //TAKE THE SCREENSHOT HERE
    }
    

    另外,别忘了设置委托。

    【讨论】:

      【解决方案2】:

      iOS SDK 有一个功能ma​​pViewSnapshotReady可以使用引用协议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 中没有。
        • 嗯,太糟糕了。尽管如此,还是感谢您提供的信息。
        猜你喜欢
        • 2012-03-02
        • 2014-11-02
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        • 2013-01-13
        相关资源
        最近更新 更多