1

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

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

我的问题是,使用此序列顺序,当没有 WiFi 连接(只有 3G 或可能是 Edge)时,引脚需要大量丢弃,因为它正在等待获取反向地理编码信息。

所以基本上我需要删除没有字幕的图钉,并从 viewDidAnnotation 调用地理编码器并在 reverseGeocoder 内部更新字幕,但我不知道该怎么做。

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

有什么建议么?

提前致谢

4

2 回答 2

4

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

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

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

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

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

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

请注意更改的顺序,didChangeValueForKey:因为它们需要正确嵌套,有点像 HTML 标记。

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

于 2011-04-18T16:23:57.340 回答
0

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

于 2011-04-18T16:24:25.437 回答