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