代码之家  ›  专栏  ›  技术社区  ›  Chris McCall

删除mkannotations并将其添加到mapview将使我的mapview为空

  •  0
  • Chris McCall  · 技术社区  · 14 年前

    以下是这个问题:

    Forcing Reload of View when returning from FlipSideView of Utility Application

    当从反面视图返回时,我打电话给

    NSArray *annotations = [NSArray arrayWithArray:[mapView annotations]];
    [mapView removeAnnotations:annotations];
    

    删除地图上的所有别针(如果这不是最好的方法,请告诉我)。

    然后:

    for(Hole *hole in fetchedObjects)
        {
            double latitude = [hole.Latitude doubleValue];
            cord.latitude = latitude;
            double longitude = [hole.Longitude doubleValue];
            cord.longitude = longitude;
    
            WellPlaceMark *placemark = [[WellPlaceMark alloc] initWithCoordinate:cord withWellType:[NSString stringWithString: hole.WellType]]; 
            [mapView addAnnotation:placemark];
    
        }
    

    加:

    - (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
        MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
    
        if ([annotation isKindOfClass:[MKUserLocation class]])
            return nil;
    
        if([annotation isKindOfClass:[WellPlaceMark class]])
        {
    ...
    
        }
        annView.animatesDrop=FALSE;
        return annView;
    }
    

    所有这些代码似乎都是在调试器中调用的,但是当它完成时,我得到了一个空白的映射。我试过把镜头缩小,但别针不见了。第一次试穿时地图很好,但我一打电话 removeAnnotations 他们再也不会回来了。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Chris McCall    14 年前

    我发现了:我正在添加一个新的 MKMapView 在索引0处,显示在 MKMMAVIEW 我已经澄清了。重新使用相同的 MKMMAVIEW 解决了问题。