Изменить размер карты Google программно (Swift) - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь добавить Google GMSMapView программно, но застрял и буду признателен за любую помощь.Я хочу установить ограничения карты по краям вида.

Однако, когда я делаю это, я получаю сообщение об ошибке: «Невозможно активировать ограничение с помощью якорей, и потому что у них нет общего предка. Ограничение или его якоря ссылаются на элементы в разных иерархиях представления?»

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 Карты загружаться правильно, если не указывать привязки, поэтому я считаю, что в противном случае я настроил его правильно.Я просто не понимаю концепции правильной установки якорей.

Это решение похоже, но больше ориентировано на добавление вида с автоматической разметкой.

1 Ответ

0 голосов
/ 14 сентября 2018

Проблема возникает, когда вы применяете ограничения к представлению перед добавлением его в родительское представление. Также установите для 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
...