iPhone - 更新mapkit中的注释字幕

时间:2011-04-18 16:04:02

标签: iphone mapkit mkannotation reverse-geocoding

我有一个带标题和副标题的自定义地标。字幕实际上是使用反向地理编码器显示掉落引脚的地址。

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

我的问题是使用这个序列顺序,当没有WiFi连接(只有3G或可能是Edge)时,该引脚需要花费很多时间才能丢弃,因为它可以获得反向地理编码信息。

所以基本上我需要在没有字幕的情况下放下引脚,并且从viewDidAnnotation调用地理编码器,在reverseGeocoder内部更新字幕,但我不知道该怎么做。

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

有什么建议吗?

提前致谢

2 个答案:

答案 0 :(得分:4)

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

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

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

请注意,上面的代码假定在注释类中。

然后使用地理编码器中的信息更新注释。完成后:

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

请注意didChangeValueForKey:的顺序已更改,因为这些内容需要正确嵌套,有点像HTML标记。

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

答案 1 :(得分:0)

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