【问题标题】:Change Google Map Size Programmatically (Swift)以编程方式更改 Google 地图大小 (Swift)
【发布时间】:2018-09-14 10:36:45
【问题描述】:

我正在尝试以编程方式添加 Google GMSMapView,但遇到了困难,希望能提供任何帮助。我想将 Map 的约束设置为视图的边缘。

但是,当我这样做时,我得到一个错误,“无法使用锚激活约束,因为它们没有共同的祖先。约束或其锚是否引用不同视图层次结构中的项目?”

var mapView:GMSMapView?

override func viewDidLoad() {
    super.viewDidLoad()

    mapView = GMSMapView.map(withFrame: CGRect(x: 100, y: 100, width: 200, height: 200), camera: GMSCameraPosition.camera(withLatitude: 51.050657, longitude: 10.649514, zoom: 5.5))

    mapView?.center = self.view.center

    mapView?.topAnchor.constraint(equalTo: view.topAnchor).isActive=true
    mapView?.leftAnchor.constraint(equalTo: view.leftAnchor).isActive=true
    mapView?.rightAnchor.constraint(equalTo: view.rightAnchor).isActive=true
    mapView?.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 60).isActive=true

    self.view.addSubview(mapView!)

}

如果省略锚点,我可以让谷歌地图正确加载,所以我相信我已经正确设置了它。我只是不明白如何正确设置锚点的概念。

This solution 类似,但更侧重于添加具有自动布局的视图。

【问题讨论】:

    标签: swift google-maps gmsmapview


    【解决方案1】:

    当您在将视图添加到父视图之前将约束应用于视图时,会出现此问题。还将 translatesAutoresizingMaskIntoConstraints 设置为 false 以使约束起作用。

    self.view.addSubview(mapView!)
    mapView?.translatesAutoresizingMaskIntoConstraints = false
    mapView?.topAnchor.constraint(equalTo: view.topAnchor).isActive=true
    mapView?.leftAnchor.constraint(equalTo: view.leftAnchor).isActive=true
    mapView?.rightAnchor.constraint(equalTo: view.rightAnchor).isActive=true
    mapView?.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 60).isActive=true
    

    【讨论】:

    • 啊!如此简单,但与我的想法相去甚远。谢谢!
    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 2013-09-06
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多