对于我的应用程序,我需要从gps坐标获取Google街景图像。我知道如何从坐标中获取全屏GMSPanoramaView,但最终我需要将其作为UIImage。

        let panoView = GMSPanoramaView(frame: .zero)
        self.view = panoView
        panoView.moveNearCoordinate(location.coordinate)
        panoView.setAllGesturesEnabled(false)

        // can this be converted to a UIImage?
        var streetViewImage: UIImage?
        streetViewImage = panoView


我看到其他人在子视图中显示了GMSPanoramaView-这是一个更好的选择吗?还是有其他方法可以从Google Street View获取静态UIImage?

最佳答案

public extension GMSPanoramaView {

    @objc public func toImage() -> UIImage {
        UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
        drawHierarchy(in: self.bounds, afterScreenUpdates: true)
        let image = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return image
    }
}


上面的代码将截取您的视图的屏幕截图。为了从网络中加载正确的数据(并且不会获得黑色屏幕截图),您将需要实现GMSPanoramaViewDelegate,可能在网络请求完成并且图像可见时将调用PanoramaView:didMoveToPanorama:。届时,您可以调用toImage()并存储您的图像。

https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_panorama_view_delegate-p

关于ios - 将GMSPanoramaView转换为UIImage?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47503198/

10-09 02:32