以编程方式更改Google地图大小(快速)

时间:2018-09-14 02:00:49

标签: swift google-maps gmsmapview

我正在尝试以编程方式添加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!)

}

如果不考虑锚点的话,我可以让Google Maps正确加载,所以我相信我可以正确设置它。我只是不了解如何正确设置锚点的概念。

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

1 个答案:

答案 0 :(得分:2)

当您将约束添加到视图之前将其添加到父视图时,就会发生此问题。还要将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