конфликт карт Google с контроллером панели вкладок - PullRequest
0 голосов
/ 02 июля 2019

Мне нужно встроить карты Google через контроллер панели вкладок, но у меня проблема.если я не отображаю карты Google на первом экране панели вкладок контроллера, то функции определения доступа к геолокации и определения текущего местоположения не выполняются:

func locationManager (_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus)
func locationManager (_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])

примечание 1: приложениес контроллером панели вкладок корректно работает только при первом запуске, если я убиваю приложение, затем открываю его, то функции геолокации не работают.это помогает только переустановить приложение

примечание 2: Карты Google не работают только в контроллере панели вкладок.Я делал их отдельно или инициализировал первый просмотр.Но мне нужно, чтобы они были точно в панели вкладок контроллера

Примечание 3: Здесь показан раскадровка, viewcontroller 3 содержит карты Google

https://cdn1.savepice.ru/uploads/2019/7/2/b82c92582c21b4a208590b226e5dc2b9-full.png

class ViewController: UIViewController {

 @IBOutlet weak
 var mapView: GMSMapView!

  let locationManager = CLLocationManager()

 override func viewDidLoad() {
  super.viewDidLoad()
  locationManager.delegate = self
  locationManager.requestWhenInUseAuthorization()
  mapView.delegate = self
 }
}

extension ViewController: CLLocationManagerDelegate {
 func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
  if status == .authorizedWhenInUse {
   locationManager.startUpdatingLocation()
   mapView.isMyLocationEnabled = true
   mapView.settings.myLocationButton = true
  } else {
   let camera = GMSMutableCameraPosition(latitude: 48.706986, longitude: 44.515993, zoom: 15)
   mapView.camera = camera
  }
 }
 func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
  if let location = locations.first {
   mapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
   locationManager.stopUpdatingLocation()
  }
 }
}
...