【问题标题】:How to tell when MKMapView and visible MKAnnotationView are finished drawing?如何判断 MKMapView 和可见 MKAnnotationView 何时完成绘制?
【发布时间】:2010-11-09 04:13:51
【问题描述】:

我正在显示一个带有 MKAnnotations 的 MKMapView,其中一些已被选中并显示它们的注释。 我正在尝试使用 -renderInContext 获取显示的地图和注释的图像。

90% 的时间地图、MKPinAnnotationView 和选定的注释被正确捕获。 另外 10% 的时间图像丢失了某些东西,通常是 MKPinAnnotationViews 或它们的注释(如果选择)。

我添加了代码来处理地图本身加载它的地图数据。

但是我无法找到可以向我表明所有可见的 MKPinAnnotationView 都已绘制的内容 如果选择显示他们的注释??

我遇到的最接近的提示是 addObserver,尽管我还没有弄清楚可以观察到什么会告诉我何时完成所有绘图。

想法?

【问题讨论】:

  • 我遇到了类似的问题,但另一半——你怎么知道地图何时完成加载地图数据? (缓存切片时,mapViewDidFinishLoadingMap 不会触发)。你说你添加了代码来处理这个问题——那是什么样的?
  • 我在检测谷歌图块加载时遇到了同样的问题。 @Jeremy 你找到解决方案了吗?

标签: iphone rendering mkmapview


【解决方案1】:

好吧,我是个白痴... 我终于找到了问题所在。在 MKMapView 委托协议中的 viewForAnnotation 例程中,我没有正确设置重用 MKPinAnnotationView 的值。 所以有时我会重用一个 .canShowCallout 设置为 YES 的视图,而其他时候我会重用一个 .canShowCallout 设置为 NO 的视图。

.

【讨论】:

    【解决方案2】:

    尝试使用MKMapViewDelegate didAddAnnotationViews 方法。

    如果在该方法中,绘图仍未准备好满足您的要求,您可以在其中使用 performSelector:withObject:afterDelay: 调用您的捕获方法。

    【讨论】:

    • 我实际上已经在使用该方法,但仍然无法获得一致的结果。无论我允许什么时间,我都不能保证会显示注释。我正在检查我可以查看的所有内容,它们都建议注释有效并显示,但它不是(至少不是一致的)。一个提示是,当我一次在地图上显示多个注释时,这似乎是不一致的。??
    • 也许如果您发布了一些重复问题的 sn-p 代码或 addAnnotation 和捕获方法,可能会弹出一些东西。
    猜你喜欢
    • 2014-07-19
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    相关资源
    最近更新 更多