【问题标题】:viewForAnnotation not called in iPhone 4 but works in simulator [closed]viewForAnnotation 未在 iPhone 4 中调用,但在模拟器中工作 [关闭]
【发布时间】:2011-11-20 15:24:52
【问题描述】:

所以我遇到了最奇怪的问题,我已经去了所有看起来的地方。我遇到的问题是我为我的 MKMapView 创建了自定义注释视图。这个 MKMapView 开始时没有注释,当您更改区域时,会创建注释并将其添加到地图中。在调用 [my_map_view addAnnotation:a_annotation];什么都没发生。 mapView viewForAnnotation 没有被调用,也没有任何显示。现在,iPhone4 就是这种情况,但是当我在模拟器上运行相同的代码时,它最终可以工作。我想知道这是为什么?我相信这是地图部分的刷新问题,因为当我双击手机并且地图进行缩放交易时,注释会显示出来。我知道你可以做一大堆 [my_map_view setRegion:my_map_view.currentRegion];并将中心设置为中心以尝试刷新我什至尝试将区域更改为不同的区域,但没有任何效果。任何想法,我都很难过,过去 3 天一直在研究这个问题。

【问题讨论】:

  • 您需要重新格式化以提高可读性,提出您的问题并提供代码。
  • 如果你想要任何体面的答案,你应该听他的。
  • 请发布您的 viewForAnnotation 方法。

标签: iphone ios-simulator mkannotation mkannotationview mapkit


【解决方案1】:

大家好,我解决了问题所在。每当您在重新加载地图时遇到问题时,我发现最好的解决方案是销毁并创建地图以显示您的注释。因此,请确保从视图版本中删除地图,并将其设置为 nil,然后重新分配内存并使用注释数据对其进行初始化。抱歉没有发布代码我必须清理很多数据名称才能:( - 如果这个解决方案不起作用,请继续给我发消息,这样我就可以和你一起浏览代码。如果有什么我总能做一个给你的例子:)这可能只是一段时间的工作原因。

这也是我对你们的 annot 方法的看法,因为我知道这是为了发布:)

-(MKAnnotationView*)mapView:(MKMapView*)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    MKAnnotationView *annotation_view = nil;
    CustomAnnotation *annot = (CustomAnnotation*)annotation;
    CustomAnnotationView *view;
            view = [[[CustomAnnotationView alloc] initWithAnnotation:annot reuseIdentifier:@"Job"] autorelease];
    [view addObserver:self forKeyPath:@"selected"options:NSKeyValueObservingOptionNew context:GMAP_ANNOTATION_SELECTED];
    view.image = [UIImage imageNamed:@"map_marker"];
    view.canShowCallout = YES;
    annotation_view = view;
    [annotation_view setEnabled:YES];
    [annotation_view setCanShowCallout:YES];
    return annotation_view;
}

【讨论】:

    猜你喜欢
    • 2013-12-14
    • 1970-01-01
    • 2011-08-10
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多