Iphone 更新MKMapView上自定义注释的标题/副标题

Iphone 更新MKMapView上自定义注释的标题/副标题,iphone,ios4,mkmapview,Iphone,Ios4,Mkmapview,我创建了一个自定义注释来显示我的数据。数据来自移动的车辆,我必须更新它们在地图上的位置以及它们的标题(它显示了上次更新的时间) 我的第一种方法是简单地删除所有注释并重新创建它们。然而,这会导致大量可怕的闪烁(地图被清除,然后所有注释再次出现)以及地图在重画时的块。低于最优解 在OS4SDK中,他们改进了MKMapViewAnnotation,现在我可以设置坐标(它们以前是只读的)。更改坐标可以很好地移动视图,而不会出现任何闪烁。这解决了我的一个问题 它在API文档中说,更改MKAnnotatio

我创建了一个自定义注释来显示我的数据。数据来自移动的车辆,我必须更新它们在地图上的位置以及它们的标题(它显示了上次更新的时间)

我的第一种方法是简单地删除所有注释并重新创建它们。然而,这会导致大量可怕的闪烁(地图被清除,然后所有注释再次出现)以及地图在重画时的块。低于最优解

在OS4SDK中,他们改进了
MKMapViewAnnotation
,现在我可以设置坐标(它们以前是只读的)。更改坐标可以很好地移动视图,而不会出现任何闪烁。这解决了我的一个问题

它在API文档中说,更改
MKAnnotation
的标题将更新
MKAnnotationView
。实际上,
MKPinView
就是这样。如果我更新了
MKAnnotation
的坐标和标题,则管脚将移动并显示新数据

如何使用自定义的
MKAnnotationView
获得相同的结果?我找不到任何方法要求视图刷新。 我尝试在
MKAnnotationView
上调用
setNeedsLayout
,但这只会导致视图消失


干杯。

尝试了
设置需要显示

MKMapView
用于观察
标题
副标题
属性的更改。确保地图视图注意到您的更改的最简单方法是将它们设置为属性,并使用
setTitle:
/
setSubtitle:
方法(或
self.title=@“…”;
-请注意,需要使用
self.
符号):

CustomAnnotation.h
CustomAnnotation.m
综合属性设置器为您处理键值观察的严格性。否则,你将不得不称自己为;这些在
NSObject
中实现:

[self willChangeValueForKey:@"title"];
[title release];
title = @"New title.";
[self didChangeValueForKey:@"title"];

你找到解决办法了吗?不幸的是我没有。我不得不销毁并重新创建注释。建议的setNeedsDisplay或其他重画线索无效。如果您自己实现setTitle/setSubtitle,则不需要使用willChangeValueForKey/didChangeValueForKey:。(如果使用标准设置器名称,KVO magic mappens将自动打开。)
@synthesize title, subtitle;

- (void)changeAnnotation {
    self.title = @"New title!";
    [self setSubtitle:@"New subtitle!"];
}
[self willChangeValueForKey:@"title"];
[title release];
title = @"New title.";
[self didChangeValueForKey:@"title"];