谷歌地图的连续动画
Posted
技术标签:
【中文标题】谷歌地图的连续动画【英文标题】:continus animation with google maps 【发布时间】:2016-03-05 16:20:25 【问题描述】:我有这个方法:
private func setupCameraPositionForMovement(markerPos: CLLocationCoordinate2D, secondPos: CLLocationCoordinate2D)
let bearing = bearingBetweenLatLngs(markerPos, end: secondPos)
let cameraPosition = GMSCameraPosition(target: markerPos, zoom: 16, bearing: bearing + 20, viewingAngle: 90)
map.animateToCameraPosition(cameraPosition)
我正在使用这种方法对从markerPos
到secondPos
的运动进行动画处理,当我调用它时,它可以正常工作:
CATransaction.begin()
CATransaction.setAnimationDuration(1)
setupCameraPositionForMovement(markers[selectedIndex - 1].position, secondPos: markers[selectedIndex].position)
CATransaction.commit()
现在,我想多次调用这个动画来显示一个连续的动作, 所以我尝试了这段代码:
for i in 1..<markers.count
CATransaction.begin()
CATransaction.setAnimationDuration(1)
setupCameraPositionForMovement(markers[i - 1].position, secondPos: markers[i].position)
CATransaction.commit()
但没有任何好处。
当我搜索这个问题时,我发现了类似CAAnimationGroup
的东西,但我不知道在这种情况下如何使用它。
谁能帮帮我?
【问题讨论】:
【参考方案1】:CAAnimationGroup 允许对多个动画进行分组并同时运行。分组动画在 CAAnimationGroup 实例指定的时间空间内运行。
分组动画的持续时间不会缩放到它们的 CAAnimationGroup 的持续时间。相反,动画被剪辑到动画组的持续时间。
CAAnimationGroup 只有一个属性:动画。
此属性旨在将动画数组添加到图层。例如,假设您想在屏幕上移动图层时更改图层的透明度。如果您只是简单地创建两个动画并将它们逐个添加到图层中,您将失去同步控制,并且根据您的应用正在执行的操作,您可能会在两个动画之间有一些明显的延迟。
更多信息请查看page。
您也可以查看此SO question 了解更多信息。
【讨论】:
那么,我怎样才能在我的情况下继续移动?以上是关于谷歌地图的连续动画的主要内容,如果未能解决你的问题,请参考以下文章