谷歌地图的连续动画

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)

我正在使用这种方法对从markerPossecondPos 的运动进行动画处理,当我调用它时,它可以正常工作:

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 了解更多信息。

【讨论】:

那么,我怎样才能在我的情况下继续移动?

以上是关于谷歌地图的连续动画的主要内容,如果未能解决你的问题,请参考以下文章

如何把谷歌地图动画转换为视频文件

动画地图到位置不工作谷歌地图 iOS

谷歌地图 api 与 jquery 幻灯片的集成存在动画故障

如何在谷歌地图上一一加载标记动画[重复]

谷歌地图 api 动画和多个信息窗口

css 谷歌地图动画飞行路径