使用Google地图上的动画在多个位置之间移动标记

时间:2019-10-03 17:29:28

标签: ios swift google-maps

我想在两个位置坐标之间移动汽车图标,并想通过滑块更改该汽车图标的持续时间(速度)。

我尝试使用CATransaction对标记进行动画处理。动画效果很好,但是我无法通过滑块实时更改持续时间(速度)。

这是我的动画标记代码。

func moveTo(point: CLLocationCoordinate2D) {
        if let marker = arrMapList[0] as? GMSMarker {
         let angle = getAngle(fromLoaction: marker.position, toLocation: points[currentIndex])
        marker.rotation = CLLocationDegrees(angle * (180.0 / .pi))
            CATransaction.begin()
            CATransaction.setAnimationDuration(5)
            CATransaction.setCompletionBlock {
                if let nextPoint = self.getNextPoint(currentIndex: self.currentIndex) {
                    self.moveTo(point: nextPoint)
                }
            }
            marker.position = point
            CATransaction.commit()
    }
    }

我尝试按照以下方式更改持续时间,但无法正常工作。

@IBAction func SliderValueChanged(_ sender: UISlider) {
    CATransaction.setAnimationDuration(CFTimeInterval(sender.value))
    }

标记(汽车)图标应在两个坐标之间移动,并且如果用户通过向左或向右滑动滑块来更改速度值,则动画持续时间将受到影响。

1 个答案:

答案 0 :(得分:0)

您不能更改飞行中动画的持续时间。

您应该能够更改图层的速度参数以加快速度。

速度= 1.0是正常速度。速度2.0将是两倍的速度(持续时间的一半)。速度为0.5将是一半速度。

您将使用

之类的代码
marker.layer.speed = 2.0

(您需要重构以从滑块设置速度。尝试从0.5到1.5的范围。)