我有一个带标题和副标题的自定义地标。字幕实际上是使用反向地理编码器显示掉落引脚的地址。
我有一个按钮,可以放下针脚。此操作获取用户的位置坐标,然后调用[geocoder start],使用Reverse Geocoder获取完整地址并生成自定义注释,然后调用[mapView addAnnotation:customPlacemark]。
我的问题是使用这个序列顺序,当没有WiFi连接(只有3G或可能是Edge)时,该引脚需要花费很多时间才能丢弃,因为它可以获得反向地理编码信息。
所以基本上我需要在没有字幕的情况下放下引脚,并且从viewDidAnnotation调用地理编码器,在reverseGeocoder内部更新字幕,但我不知道该怎么做。
我想显示没有地址详细信息的注释,并在从反向地理编码器获取信息时更新它。
有什么建议吗?
提前致谢
答案 0 :(得分:4)
MKMapView
观察通过KVO更改其注释。因此,如果您以符合KVO的方式更新注释的属性,它应该只是工作。
例如,当反向地理编码器返回注释的地址时,您首先宣布title
和subtitle
属性即将更改:
[self willChangeValueForKey:@"title"];
[self willChangeValueForKey:@"subtitle"];
请注意,上面的代码假定在注释类中。
然后使用地理编码器中的信息更新注释。完成后:
[self didChangeValueForKey:@"subtitle"];
[self didChangeValueForKey:@"title"];
请注意didChangeValueForKey:
的顺序已更改,因为这些内容需要正确嵌套,有点像HTML标记。
这也适用于导致引脚移动的coordinate
属性。
答案 1 :(得分:0)
我会放置注释,在属性中保留对它的引用,然后当您的反向地理编码器回调时,使用对注释的引用并更新其属性。