2011-04-18 62 views
1

我有一个带标题和副标题的自定义地标。字幕实际上是使用反向地理编码器显示丢弃的引脚的地址。iPhone - 在mapkit中更新注释字幕

我有一个按钮,它有一个动作来放弃引脚。此操作获取用户的位置坐标,然后调用[Geocoder start],它使用Reverse Geocoder获取完整地址,并生成自定义注释,然后调用[mapView addAnnotation:customPlacemark]。

我的问题是,使用这个序列顺序,当没有WiFi连接(只有3G或可能是边缘)的引脚花费很多,因为它是watigin得到反向地理编码信息。

所以基本上我需要删除没有字幕的pin,并从viewDidAnnotation调用地理编码器和reverseGeocoder内部更新字幕,但我不知道如何做到这一点。

我想显示没有地址详细信息的注释,并在从反向地理编码器获取信息时进行更新。

有什么建议吗?

在此先感谢

回答

4

MKMapView观察通过志愿改变其注解。因此,如果您以符合KVO的方式更新您的注释属性,它应该是正常工作。

例如,当反向地理编码为您的注释返回地址,首先宣布titlesubtitle属性是即将改变:

[self willChangeValueForKey:@"title"]; 
[self willChangeValueForKey:@"subtitle"]; 

注意,上面的代码被认为是在注释类。

然后用来自地理编码器的信息更新注释。当您完成:

[self didChangeValueForKey:@"subtitle"]; 
[self didChangeValueForKey:@"title"]; 

注意顺序didChangeValueForKey:改变这些需要被正确地嵌套,有点像HTML标签。

这也适用于coordinate属性,这将导致引脚移动。

+0

那么在reverseGeocoder中,我甚至不需要创建一个新的customPlacemark对象? 使用[self willChangeValueForKey:@“title”]它如何知道我在引用我的自定义Placemark注释? 非常感谢您的回答 – Chompas 2011-04-18 16:29:28

+0

如果从示例中不清楚该方法是从注释类中调用的,那么'self'就是添加到地图视图的注释。您可以在反向地理编码器中通过查找正确的注释(地标)并在实例上调用'willChangeValueForKey:'和'didChangeValueForKey:'来执行此操作。 – freespace 2011-04-18 16:36:55

+0

今晚我会试试这个,告诉你它是怎么回事。谢谢=) – Chompas 2011-04-18 18:31:29

0

我会放置注释,在属性中保留对它的引用,然后当您的反向地理编码器回调时使用对注释的引用并更新其属性。