ios - 如何在 iOS 的谷歌街景 SDK 中添加 UIImageView

标签 ios swift google-maps google-street-view

@IBOutlet weak var getout: UIButton!
@IBOutlet weak var legstreet: UIImageView!
@IBOutlet weak var viewStreett: GMSPanoramaView!
var panoramaNear: CLLocationCoordinate2D!
override func viewDidLoad() {
    super.viewDidLoad()
    panoramaNear = CLLocationCoordinate2DMake(30.274262, -97.752371)
    //var panoramaNear = self.tmpString
    var panoView = GMSPanoramaView.panoramaWithFrame(CGRectZero,
        nearCoordinate:panoramaNear)        
    self.viewStreett = panoView
    // Do any additional setup after loading the view.
}

我这样写的时候,街景是显示不出来的。我必须修改 self.viewStreett = panoView 改为self.view = panoView. 但是此时UIImageView消失了。所以我的问题是如何将 UIImageView 添加到街景中并且不干扰街景的使用。

最佳答案

您的 viewStreet 将是一个正在加载的 GMSPanoramaView,因为它没有坐标。所以你不能使加载 GMSPanoramaView 等于你的 panoView(viewStreet = panoView 不会工作)。

相反,您可以将 viewStreet 的类型更改为 UIView,现在它的行为类似于您的 panoView 的容器 View 。然后你可以执行 viewStreet.addSubview(panoView) 将你的 panoView 添加到容器中。

示例代码:

    @IBOutlet weak var viewStreet: UIView!
    @IBOutlet weak var sampleImageView: UIImageView!
    var panoView: GMSPanoramaView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let panoramaNear = CLLocationCoordinate2DMake(30.274262, -97.752371)

        panoView = GMSPanoramaView.panoramaWithFrame(CGRectZero,
            nearCoordinate:panoramaNear)

        viewStreet.addSubview(panoView)
        viewStreet.sendSubviewToBack(panoView)

        let equalWidth = NSLayoutConstraint(item: panoView, attribute: .Width, relatedBy: .Equal, toItem: viewStreet, attribute: .Width, multiplier: 1.0, constant: 0)
        let equalHeight = NSLayoutConstraint(item: panoView, attribute: .Height, relatedBy: .Equal, toItem: viewStreet, attribute: .Height, multiplier: 1.0, constant: 0)
        let top = NSLayoutConstraint(item: panoView, attribute: .Top, relatedBy: .Equal, toItem: viewStreet, attribute: .Top, multiplier: 1.0, constant: 0)
        let left = NSLayoutConstraint(item: panoView, attribute: .Left, relatedBy: .Equal, toItem: viewStreet, attribute: .Left, multiplier: 1.0, constant: 0)

        panoView.setTranslatesAutoresizingMaskIntoConstraints(false)
        NSLayoutConstraint.activateConstraints([equalWidth, equalHeight, top, left])
    }

如果您在应用中使用 AutoLayout,则应向 panoView 添加宽度、高度、顶部和左侧约束。

您可以在 this GitHub page 中查看示例应用程序.

在下面的模拟器屏幕截图中,我只是在 panoView 顶部添加了一个标记图像。 enter image description here

关于ios - 如何在 iOS 的谷歌街景 SDK 中添加 UIImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31530042/

相关文章:

ios - Swift - 如何获取 .Mov 格式?

swift - 代表团无法在 subview 中快速工作

ios - Firebase 检索数据 - 无法转换值(value)

swift - 如何解决图像处理的内存问题?

javascript - meteor :谷歌地图的 Bootstrap 模式问题

iOS后台队列检索数据两次?

ios - 打开 Facebook 页面墙的 URL 在 UIWebView 中不起作用

ios - 使 UITextView 高度动态化,约束乘数问题

javascript - 使用 GMaps.js 集成 Google Maps API - 看不到在哪里添加我的 API key

android - 添加 key 时谷歌地图输入无效