绘图动画
Animation for drawings
我想知道是否有一些可用的动画可以动态更改 MapPolyline
和 MapPolygon
。
现在,我可以绘制它们并通过 geometry
属性 编辑它们,但没有任何动画:
let geoPolyline = try! GeoPolyline(vertices: option3Geo)
let lineColor = UIColor(red: 0, green: 0.56, blue: 0.54, alpha: 0.63)
mapPolyline = MapPolyline(geometry: geoPolyline,
widthInPixels: 30,
color: lineColor)
mapView.mapScene.addMapPolyline(mapPolyline!)
// and later to update without any animations
mapPolyline?.geometry = newPoints
多边形相同:
let geoPolygon = try! GeoPolygon(vertices: option3Geo)
let fillColor = UIColor(red: 0, green: 0.56, blue: 0.54, alpha: 0.63)
mapPolygon = MapPolygon(geometry: geoPolygon, color: fillColor)
mapView.mapScene.addMapPolygon(mapPolygon!)
// later
mapPolygon.geometry = geometry
如果可以将一些动画添加到此更改中,那就太好了 - 在我的例子中,用户“即时”更改多边形,如果没有动画,它看起来有点难看。
截至目前,对于 HERE SDK 4.7.5.0,此类动画不适用于 SDK 端的 MapPolyline <-> MapPolygon。添加动画可能是一个合理的请求,并且可能计划在未来发布,但在您的情况下,最好的解决方案是在应用程序级别应用动画。然后您可以完全控制您希望看到的行为。您可以将动画应用于 MapPolyline 以将它们拖动到屏幕上,或者在不同形状之间变形。这只需要一点数学知识。您还可以查找一些现有的动画库,例如 Spring.
由于 HERE SDK 允许在下一个渲染帧上更新几何图形,这可用于通过使用显示器 link.
设置随时间动画的略微修改的多段线
定义一个与显示渲染同步的循环:
private lazy var displayLink = CADisplayLink(target: self,
selector: #selector(animatorLoop))
开始渲染循环:
displayLink.isPaused = false
displayLink.add(to: .current, forMode: .common)
动画:
// Called periodically.
@objc private func animatorLoop() {
// Change the geometry ...
}
在 Gestures 示例应用程序中,实际上有一个 HERE SDK 示例利用它来随时间更改缩放级别。我在上面稍微修改了一下,以展示它通常是如何工作的。
我想知道是否有一些可用的动画可以动态更改 MapPolyline
和 MapPolygon
。
现在,我可以绘制它们并通过 geometry
属性 编辑它们,但没有任何动画:
let geoPolyline = try! GeoPolyline(vertices: option3Geo)
let lineColor = UIColor(red: 0, green: 0.56, blue: 0.54, alpha: 0.63)
mapPolyline = MapPolyline(geometry: geoPolyline,
widthInPixels: 30,
color: lineColor)
mapView.mapScene.addMapPolyline(mapPolyline!)
// and later to update without any animations
mapPolyline?.geometry = newPoints
多边形相同:
let geoPolygon = try! GeoPolygon(vertices: option3Geo)
let fillColor = UIColor(red: 0, green: 0.56, blue: 0.54, alpha: 0.63)
mapPolygon = MapPolygon(geometry: geoPolygon, color: fillColor)
mapView.mapScene.addMapPolygon(mapPolygon!)
// later
mapPolygon.geometry = geometry
如果可以将一些动画添加到此更改中,那就太好了 - 在我的例子中,用户“即时”更改多边形,如果没有动画,它看起来有点难看。
截至目前,对于 HERE SDK 4.7.5.0,此类动画不适用于 SDK 端的 MapPolyline <-> MapPolygon。添加动画可能是一个合理的请求,并且可能计划在未来发布,但在您的情况下,最好的解决方案是在应用程序级别应用动画。然后您可以完全控制您希望看到的行为。您可以将动画应用于 MapPolyline 以将它们拖动到屏幕上,或者在不同形状之间变形。这只需要一点数学知识。您还可以查找一些现有的动画库,例如 Spring.
由于 HERE SDK 允许在下一个渲染帧上更新几何图形,这可用于通过使用显示器 link.
设置随时间动画的略微修改的多段线定义一个与显示渲染同步的循环:
private lazy var displayLink = CADisplayLink(target: self,
selector: #selector(animatorLoop))
开始渲染循环:
displayLink.isPaused = false
displayLink.add(to: .current, forMode: .common)
动画:
// Called periodically.
@objc private func animatorLoop() {
// Change the geometry ...
}
在 Gestures 示例应用程序中,实际上有一个 HERE SDK 示例利用它来随时间更改缩放级别。我在上面稍微修改了一下,以展示它通常是如何工作的。