https://issuetracker.google.com/u/1/issues/71738889
у вращать GMap, изменяя значение угла наклона подшипника, чтобы камера вращалась вокруг центральной точки (360 градусов на один полный раунд). Когда мы меняем направление, в начальных и конечных точках камеры возникает эффект ослабления. Как я могу контролировать / изменить это, чтобы сделать вращение плавным при измененииBearing
значения (чтобы повернуть карту на 360 градусов, плавная анимация)?
Требуется это для всех языков, так как эффект ослабления в разных языковых библиотеках различен. например Swift, Android, PHP, JS, Node.js, React.
Пожалуйста, не голосуйте, не указав вескую причину (которая помогает нам учиться и знать). Мне не нравятся грубые критики и необразованное поведение придирчивого голосования.
Пример Swift (работает ОК в линейной анимации):
Обратите внимание, что изначально анимация имела рывки и в iOS, но когда мы использовалиCAMediaTimingFunction(name: kCAMediaTimingFunctionLinear
вдоль егоCATransaction
свойства, то анимация GMap превратилась в плавную анимацию. так что теперь, если вы видите код ниже, изменение вBearing
значение не создает эффект рывка (из-за эффекта замедления в анимации GMap). Я ищу подходящее решение дляAndroid
а такжеWeb
также.
//Move the map around current location, first loop
let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
CATransaction.begin()
CATransaction.setValue(3.0, forKey: kCATransactionAnimationDuration)
CATransaction.setAnimationTimingFunction(timingFunction)
CATransaction.setCompletionBlock({
//Move the map around current location, second loop
let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
CATransaction.begin()
CATransaction.setValue(3.0, forKey: kCATransactionAnimationDuration)
CATransaction.setAnimationTimingFunction(timingFunction)
CATransaction.setCompletionBlock({
//Move the map around current location, third loop
let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
CATransaction.begin()
CATransaction.setValue(3.0, forKey: kCATransactionAnimationDuration)
CATransaction.setAnimationTimingFunction(timingFunction)
CATransaction.setCompletionBlock({
UIView.animate(withDuration: 0.5, animations: {
self.findingYourLocation.alpha = 0.0
})
//TODO: Set nearest branch
// Zoom in one zoom level
let zoomCamera = GMSCameraUpdate.zoomIn()
self.mapView.animate(with: zoomCamera)
// Center the camera on UBL Branch when animation finished
//let nearestBranch = CLLocationCoordinate2D(latitude: 24.850751, longitude: 67.016589)
let nearestBranch = CLLocationCoordinate2D.init(latitude: 24.806849, longitude: 67.038734)
let nearestBranchCam = GMSCameraUpdate.setTarget(nearestBranch)
CATransaction.begin()
let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
CATransaction.setValue(3.0, forKey: kCATransactionAnimationDuration)
CATransaction.setAnimationTimingFunction(timingFunction)
CATransaction.setCompletionBlock({
self.nextButton.alpha = 1.0
})
self.mapView.animate(with: nearestBranchCam)
self.mapView.animate(toZoom: 15)
self.mapView.animate(toBearing: 0)
self.mapView.animate(toViewingAngle: 0)
CATransaction.commit()
})
self.mapView.animate(toBearing: self.mapView.camera.bearing + 120)
CATransaction.commit()
})
self.mapView.animate(toBearing: self.mapView.camera.bearing + 120)
CATransaction.commit()
})
self.mapView.animate(toBearing: self.mapView.camera.bearing + 120)
CATransaction.commit()
Пример кода Android (есть проблема):
Пример Android / пример кода можно найти здесь:https://issuetracker.google.com/issues/71738889
Который также включает в себя.apk
файл,.mp4
видео примера приложения. Который явно показывает резкие эффекты, когдаBearing
значение изменяется при повороте карты на 360 градусов.