【发布时间】:2016-11-09 16:21:12
【问题描述】:
我每 0.1 秒将地图标记移动 1 米,代码如下:
for index in 1 ... points.count - 1 {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1 * Double(index)) {
self.driverMarker.position = points[index]
self.driverMarker.map = self.mapView
}
}
如果所有点的距离都是 3000 米,那么我设置设置为 3000 asyncAfters,我担心这效率低下。
有没有更好的方法来做到这一点?
【问题讨论】:
-
你问错问题了。你为什么要在主线程上异步调度数千个块,每 1/10 秒一个接一个?您应该询问解决您认为可以解决的问题的最佳方法。
-
那么您是说要在一段时间内沿点路线为地图标记设置动画?
-
是的,我想在 CLLocationCoordinates 的预定义路线上为地图标记设置动画。
标签: ios swift swift3 grand-central-dispatch