В IOS 13 положение камеры Google Map не отображается точно, когда ViewController представлен, но не нажат. Оба снимка экрана прилагаются - PullRequest
0 голосов
/ 06 мая 2020

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

  • Поместите мой код в viewwillappear & viewdidappear и удалите его из viewdidload.
  • Поместите весь мой код в DispatchQueue через 2 секунды
  • Использовать анимацию и увеличить / уменьшить время.

Пример кода был прикреплен только для того, чтобы показать один маркер, который отлично работает, когда контроллер представления помещается в стек навигации.

 func testCode() {
    mapView.layoutIfNeeded()
   DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: {

   let camera = GMSCameraPosition(latitude: 31.326137, longitude: 75.575520, zoom: 10)
        self.pickupMarker = GMSMarker()
        self.addMarkerOnMap(lat: "31.326137", long: "75.575520", img: #imageLiteral(resourceName: "drop-icon"), mapVieww: self.mapView,marker: &(self.pickupMarker), title: "Drop at", snippet:"Hello")
    CATransaction.begin()
    CATransaction.setValue(Int(1), forKey: kCATransactionAnimationDuration)
    self.mapView.animate(to: camera)
CATransaction.commit()
               })
}

Accurate Location when pushed

InAcurate camera position when presented

1 Ответ

0 голосов
/ 09 мая 2020

Я сделал четыре вещи, чтобы решить эту проблему.

  1. Сначала возьмите контейнер в том месте, где я хочу видеть карту, в раскадровке и сделайте выход в классе.
  2. Удалить выход mapview и также удалить mapview UIVIew из раскадровки.
  3. Программно добавить GMSMapView в качестве подпредставления в контейнер (где я хочу показать карту).
  4. Добавить код в методе viewdidappear в Dispatchqueue, и теперь все работает нормально.
...