使用自动布局时,GMSMapView的animateTo()将相机移动到错误的位置

时间:2019-04-26 11:47:29

标签: ios swift google-maps google-maps-sdk-ios

我有一个GMSMapView不能填满整个屏幕,但在iPad application中却占了整个屏幕的2/3。调用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不是以编程方式创建的,而是在情节提要中设置的。

当前,我尝试在子层上设置帧,这似乎是问题的根源。我只是不知道如何可靠地选择需要重新构造的子层,这似乎也不是理想的解决方案。任何帮助将不胜感激。

0 个答案:

没有答案