我将CABasicAnimation
添加到AnnotationView
图层,以模拟在地图视图中移动的汽车。
这一点很好,直到我在动画进行过程中尝试放大或缩小mapview。
我发现缩放地图视图时动画注释视图会消失!!
我想这可能是因为在缩放mapview时已删除与动画对象关联的图层。
我尝试通过缩放时停止动画来解决这个问题。但结果并不好。汽车似乎跳到目标点。
任何人对此有什么想法?
任何人都知道在缩放mapview时如何让动画仍然运行?
答案 0 :(得分:1)
我不知道如何以编程方式解决您的问题,但是如果在用户开始缩放时将车辆位置(点a)存储到右边,当缩放完成时,计算当前位置和新位置之间的距离怎么办? (点b)然后从a点到b点设置动画。这样汽车就不会接缝“跳”到第二个目标点。为了让它变得更加漂亮,以正常速度的两倍开始汽车的速度,然后当你接近点“B”时减速到正常速度。我认为这会使它看起来不像是一个错误,更像是一种效果。
答案 1 :(得分:1)
我通过终止regionWillChangeAnimated上的所有注释动画来解决它: -
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
for (int i=0;i< [mapView.annotations count];i++)
{
id annotation = [mapView.annotations objectAtIndex:i];
MKAnnotationView* annView =[mapView viewForAnnotation: annotation];
if (annView != nil)
{
CALayer* layer = annView.layer;
[layer removeAllAnimations];
}
}
}
答案 2 :(得分:0)
我认为,您可以使用mapView:regionDidChangeAnimated:
委托方法。每次用户滚动/缩放时,都会调用此方法。试试一次。它可能对你有帮助。