如何在 Google 街景 sdk 中为 ios 添加 UIImageView

How to add an UIImageView in Google street view sdk for ios

@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 to self.view = panoView. 但是此时UIImageView消失了。所以我的问题是如何将UIImageView添加到streetview中并且不影响街景的使用。

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

相反,您可以将 viewStreet 的类型更改为 UIView,现在它的行为类似于 panoView 的容器视图。然后您可以执行 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 的顶部添加了一个标记图像。