我在 iOS (Swift) 和 Android 中使用 Google 地图服务。在android中,地图视图有一个方法叫做animatreCamera
它有一个动画,其中运动具有“缩小 - 放大”效果(如果两个摄像机具有相同的变焦,则地图视图将缩小运动的第一部分,然后放大第二部分)。我想用GMSMapView
在iOS中,我尝试过以下方法:animateToCameraPosition
, animateToLocation
, animateWithCameraUpdate
, moveCamera
并通过设置相机mapView.camera = GMSCameraPosition(target: location, zoom: 15, bearing: 0, viewingAngle: 0)
而且他们都没有这个动画。如果可以的话,如何在移动相机时实现这个动画?
我认为没有直接的方法可以在 Google Maps iOS SDK 中存档相同的动画。
解决方法可以使用 iOS 的dispatch_after
方法,首先你可以定义一个方法来延迟你想要的秒数:
func delay(#seconds: Double, completion:()->()) {
let popTime = dispatch_time(DISPATCH_TIME_NOW, Int64( Double(NSEC_PER_SEC) * seconds ))
dispatch_after(popTime, dispatch_get_main_queue()) {
completion()
}
}
然后您可以缩小相机,移动到某个位置,然后用delay
method:
delay(seconds: 0.5) { () -> () in
var zoomOut = GMSCameraUpdate.zoomTo(kGMSMinZoomLevel)
mapView.animateWithCameraUpdate(zoomOut)
delay(seconds: 0.5, { () -> () in
var vancouver = CLLocationCoordinate2DMake(49.26,-123.11)
var vancouverCam = GMSCameraUpdate.setTarget(vancouver)
mapView.animateWithCameraUpdate(vancouverCam)
delay(seconds: 0.5, { () -> () in
var zoomIn = GMSCameraUpdate.zoomTo(kGMSMaxZoomLevel)
mapView.animateWithCameraUpdate(zoomIn)
})
})
}
你用你自己的缩放值,我用kGMSMinZoomLevel
and kGMSMaxZoomLevel
here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)