缩放地图视图时,动画注释视图会消失吗?

时间:2012-07-11 09:06:01

标签: ios animation mkmapview mkannotationview cabasicanimation

我将CABasicAnimation添加到AnnotationView图层,以模拟在地图视图中移动的汽车。

这一点很好,直到我在动画进行过程中尝试放大或缩小mapview。

我发现缩放地图视图时动画注释视图会消失!!

我想这可能是因为在缩放mapview时已删除与动画对象关联的图层。

我尝试通过缩放时停止动画来解决这个问题。但结果并不好。汽车似乎跳到目标点。

任何人对此有什么想法?

任何人都知道在缩放mapview时如何让动画仍然运行?

3 个答案:

答案 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:委托方法。每次用户滚动/缩放时,都会调用此方法。试试一次。它可能对你有帮助。