Добавление Google Maps к представлению в Swift - PullRequest
0 голосов
/ 23 октября 2019

У меня следующая дилемма. Я создал 2 представления в моем проекте (GMContainer и GMHolder). Я хочу, чтобы GMHolder во всем его представлении отображал карту Google Maps.

К сожалению, я просто могу добавить представление Google Maps в середине всего моего представления и не могу сделать его внутри созданного мной представления. Также я не знаю, что добавить в mapView в качестве фрейма. Я попытался создать новый CGRect и добавить значение представления, добавив мое представление, но id, похоже, не сработает ... Любые советы о том, как изменить последние строки, чтобы Google Maps отображался во всем GMHolder?

    let GMContainer : UIView = {
       let view = UIView()
        view.backgroundColor = .white
        view.layer.cornerRadius = 25
        return view
    }()

    var GMHolder : UIView = {
        let view = UIView()
        view.layer.cornerRadius = 25
        return view
    }()

 func setupUI() {
        GMContainer.translatesAutoresizingMaskIntoConstraints = false
        GMHolder.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(GMContainer)
        view.addSubview(GMHolder)


        GMContainer.topAnchor.constraint(equalTo: categoryBox.bottomAnchor , constant: 32).isActive = true
        GMContainer.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 32).isActive = true
        GMContainer.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -32).isActive = true
        GMContainer.heightAnchor.constraint(equalToConstant: 450).isActive = true

        GMHolder.topAnchor.constraint(equalTo: GMContainer.topAnchor , constant: 40).isActive = true
        GMHolder.leadingAnchor.constraint(equalTo: GMContainer.leadingAnchor, constant: 24).isActive = true
        GMHolder.trailingAnchor.constraint(equalTo: GMContainer.trailingAnchor, constant: -24).isActive = true
        GMHolder.heightAnchor.constraint(equalToConstant: 300).isActive = true

//GM View Code

                var mapView : GMSMapView


        let camera = GMSCameraPosition.camera(withLatitude: 37.321262, longitude: -122.378945, zoom: 10)
        mapView = GMSMapView.map(withFrame: CGRect(x: GMHolder.frame.origin.x, y: GMHolder.frame.origin.y , width: 300, height: 300), camera: camera)
     //   mapView.center = self.view.center

        view.addSubview(mapView)
       GMHolder = mapView

Фотография симулятора , как вы можете видеть, она не привязана к виду.

1 Ответ

0 голосов
/ 23 октября 2019

Инициализация внутри GMHolder всего, похоже, делает свое дело.

 var GMHolder : GMSMapView = {
        GMSServices.provideAPIKey(API_KEY)
         let camera = GMSCameraPosition.camera(withLatitude: 37.321262, longitude: -122.378945, zoom: 12)
        let view = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
        view.layer.cornerRadius = 25
        view.backgroundColor = .black
        return view
    }()
...