如何在 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
等于你的 panoView
(viewStreet = 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
的顶部添加了一个标记图像。
@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
等于你的 panoView
(viewStreet = 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
的顶部添加了一个标记图像。