如何更新MKPolyline / MKPolylineView?

时间:2010-07-03 13:07:40

标签: iphone objective-c mapkit ios4

我正在尝试创建一个定期更新的折线(MKPolyline)叠加层,以模拟对象的移动。我可以通过删除旧叠加层,更新折线并再次添加叠加层来实现此目的,但这会导致闪烁。

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

这也可能以某种方式覆盖吗?

3 个答案:

答案 0 :(得分:15)

是的,您必须添加一个额外的叠加层,其中包含从您的上一个点到下一个点的点集。使用您的点创建MKPolyline后,您无法在绘制MKPolylineView时更改它而不删除旧的并添加新创建的。

您可以创建包含所有点(包括新点)的新折线视图,并将其添加到地图中,但不要删除旧版。然后一旦添加新的,你可以删除较旧的较短的一个。它可能不是很好实现,但它应该摆脱更新闪烁。你可以用标签来区分旧的和新的。也许是一个点数,因为标签可以起作用。

答案 1 :(得分:10)

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

您可以在Apple的Breadcrumb示例应用程序示例中找到示例。 Breadcrumb link

答案 2 :(得分:1)

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