如何使用 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;
我在 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;