如何使用 GMSCameraUpdate 更新 GMSMapView

How to update a GMSMapView with GMSCameraUpdate

我在 GMSMapView 上调用了 animateWithCameraUpdate,希望它能更改地图视图以显示新的 GMSCoordinateBounds,但它没有任何效果。

我的地图在 UICollectionViewReusableView 中加载以初始显示西欧:

@IBOutlet weak var mapView: GMSMapView!

var fetchedResultsController : NSFetchedResultsController!


override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
    let camera = GMSCameraPosition.cameraWithLatitude(51.48, longitude: 0, zoom: 4)
    mapView.camera = camera

}

然后我调用一个函数来查询我的所有位置并更新 GMSMapView 以显示我的所有位置:

func plotAll(){
    let bounds = GMSCoordinateBounds.init()
    for property in fetchedResultsController.fetchedObjects!
    {
        let capitalAsset : CapitalAsset = property as! CapitalAsset
        let marker = GMSMarker.init()
        marker.draggable = false
        marker.snippet = capitalAsset.address
        let location = CLLocationCoordinate2DMake(Double(capitalAsset.latitude!), Double(capitalAsset.longitude!))
        marker.position = location
        marker.map = mapView
        // Update bounds to include marker
        bounds.includingCoordinate(marker.position)
    }

    mapView.animateWithCameraUpdate(GMSCameraUpdate.fitBounds(bounds, withPadding: 50.0))

}

我的 plotAll 函数被成功调用并遍历了十几个全球位置,将它们添加到 GMSCoordinateBounds。

但是地图没有更新。当我调用 animateWithCameraUpdate 时,我期待地图视图发生变化,但它没有任何效果。

更多信息,为了调试我更换了行

    mapView.animateWithCameraUpdate(GMSCameraUpdate.fitBounds(bounds, withPadding: 50.0))

与 :

let camera = GMSCameraPosition.cameraWithLatitude(51.48, longitude: 0, zoom: 10)
mapView.camera = camera

这确实更新了我的地图视图,因此调用我的 plotAll 函数没有问题,问题可能出在我对 animateWithCameraUpdate 的使用上。

我通过替换 :

来让它工作
mapView.animateWithCameraUpdate(GMSCameraUpdate.fitBounds(bounds, withPadding: 50.0))

与:

let camera = mapView.cameraForBounds(bounds, insets:UIEdgeInsetsZero)
mapView.camera = camera;