Функция animateTo () в GMSMapView перемещает камеру в неправильное положение при использовании автоматического определения расположения - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть GMSMapView, который не заполняет весь экран, но примерно 2/3 его в iPad application.Когда вызывается UIViewController, карта ожидает обновления местоположения пользователя и анимирует MapView для центрирования в этой позиции:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        let location = locations.last!
        if(!has_first_location) {
            has_first_location = true
            let pos = GMSCameraPosition.camera(withTarget: location.coordinate, 
                                               zoom: 18.0)
            self.mapView!.animate(to: pos)
        }
    }

Предисловие здесь заключается в том, что эта проблема существует в iOS 12.1, ноне iOS 12.0.1 (оба реальных устройства, 9,7-дюймовые iPad).Вот изображение вида:

View screenshot

Как видите, вид не в центре пользователя, а в юго-восточном направлении от него.Это также происходит, если я рисую GMSPolyline или подобное, и пытаюсь центрироваться с отступом вокруг его границ.Такое поведение не происходит, когда я перемещаюсь в положение камеры мгновенно вместо анимации к ней (т. Е. С moveTo() вместо animateTo().

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

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

...