Iphone 如何更新MKPolyline/MKPolylineView?

Iphone 如何更新MKPolyline/MKPolylineView?,iphone,objective-c,mapkit,ios4,Iphone,Objective C,Mapkit,Ios4,我正在尝试创建一个周期性更新的多段线(MKPolyline)覆盖,以模拟对象的移动。我可以通过删除旧覆盖、更新多段线并再次添加覆盖来实现这一点,但这会导致闪烁 对于点注释(MKPointAnnotation),只需更改其坐标即可,视图将自动平滑更新,而无需删除和重新添加注释 这对于覆盖也是可能的吗?MKPolyline类继承了由一组点组成的MKMultiPoint。这是一个只读属性,很遗憾,这意味着您无法更新它。是的,您必须添加一个额外的覆盖,其中包含从上一个点到下一个点的点集。使用点创建MKP

我正在尝试创建一个周期性更新的多段线(MKPolyline)覆盖,以模拟对象的移动。我可以通过删除旧覆盖、更新多段线并再次添加覆盖来实现这一点,但这会导致闪烁

对于点注释(MKPointAnnotation),只需更改其坐标即可,视图将自动平滑更新,而无需删除和重新添加注释


这对于覆盖也是可能的吗?

MKPolyline类继承了由一组点组成的MKMultiPoint。这是一个只读属性,很遗憾,这意味着您无法更新它。

是的,您必须添加一个额外的覆盖,其中包含从上一个点到下一个点的点集。使用点创建MKPolyline后,在绘制MKPolylineView时,如果不删除旧的并添加新创建的MKPolylineView,则无法对其进行更改


可以创建包含所有点(包括新点)的新多段线视图,并将其添加到地图中,但不删除旧的多段线视图。然后,添加新的后,可以删除较旧的较短的。它的实现可能并不美观,但应该消除更新时的闪烁。你可以用标签来区分新旧。也许可以使用点计数作为标记。

所有MapKit覆盖图都是不可变的,因此为了获得可变性,您需要构建自定义覆盖图,并仅重新绘制需要更新的区域

您可以在Apple的面包屑示例应用程序示例中找到一个示例。

谢谢你的回答,彼得。有道理。谢谢你的回答。我已经按照你建议的方式实现了它,而且效果非常好。正如您所说,这不是最漂亮的实现,但可能是我在不编写自己的多段线类的情况下所能做的最好的实现。谢谢您的回答。不幸的是,这可能无法解决我的问题,因为我的覆盖是半透明的。我可能不得不在地图顶部添加我自己的视图。谢谢@SorinA——正如我提到的,当时我采用了@AtomRiot的方法。但在下一次应用程序更新中,我将查看面包屑样本,看看这是否是一个改进。我已经发布了一个完整的实现[here][1][1]: