iPhone - 更新mapkit中的注释字幕

发布于 2024-11-02 06:21:22 字数 431 浏览 1 评论 0原文

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

我有一个按钮,可以执行放下图钉的操作。此操作获取用户的位置坐标,然后调用 [geocoder start],它使用反向地理编码器获取完整地址并生成自定义注释,然后调用 [mapView addAnnotation:customPlacemark]。

我的问题是,使用这个序列顺序,当没有 WiFi 连接(只有 3G 或可能是 Edge)时,引脚需要很长时间才能放下,因为它需要等待获取反向地理编码信息。

所以基本上我需要在没有字幕的情况下删除引脚,并从 viewDidAnnotation 调用地理编码器并在反向地理编码器内更新字幕,但我不知道如何做到这一点。

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

有什么建议吗?

提前致谢

I have a custom placemark with title and subtitle. The subtitle is actually displaying the address of the dropped pin using the reverse geocoder.

I have a button which has an action to drop the pin. This action gets the location coordinates of the user, and then calls [geocoder start] which gets the full address with Reverse Geocoder and generates the custom annotation and then calls [mapView addAnnotation:customPlacemark].

My problem is that using this sequence order, when there's no a WiFi connection (only 3G or maybe Edge) the pin takes a lot to drop because it's watigin to get the reverse geocoding info.

So basically I need to drop the pin without a subtitle and from the viewDidAnnotation call the geocoder and inside the reverseGeocoder update the subtitle but I'm not sure how to do that.

I want to display the annotation without the address details and update it when it gets the information from the reverse geocoder.

Any suggestions?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痕至 2024-11-09 06:21:22

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

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

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

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

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

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

请注意 didChangeValueForKey: 的顺序发生了变化,因为它们需要正确嵌套,有点像 HTML 标签。

这也适用于坐标属性,这将导致图钉移动。

MKMapView observes changes its annotations via KVO. Therefore if you update your annotation's properties in a KVO compliant manner, it should Just Work.

For example, when the reverse geocoder returns an address for your annotation, you first announce the title and subtitle properties are about to change:

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

Note that the above code is assumed to be in the annotation class.

Then update the annotation with information from the geocoder. When you are done:

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

Note the order changed for didChangeValueForKey: as these need to be nested properly, somewhat like HTML tags.

This also works for the coordinate property, that will cause the pin to move.

岛歌少女 2024-11-09 06:21:22

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

I'd place the annotation, keep a reference to it in a property, then when your reverse geocoder calls back use the reference to the annotation and update its properties.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文