gpt4 book ai didi

swift - 如何使用 GMSCameraUpdate 更新 GMSMapView

转载 作者:可可西里 更新时间:2023-11-01 00:23:21 27 4
gpt4 key购买 nike

我在 GMSMapView 上调用了 animateWithCameraUpdate,期望它更改 map View 以显示新的 GMSCoordinateBounds,但它没有任何效果。

我的 map 加载到 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。

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

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

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

与:

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

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

最佳答案

我通过替换来让它工作:

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

与:

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

关于swift - 如何使用 GMSCameraUpdate 更新 GMSMapView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33971694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com