添加另一个时如何删除以前的注释引脚?

时间:2011-07-14 13:35:59

标签: iphone objective-c annotations mkmapview mapkit

我有一个UITableView,每个单元格都包含一个Map按钮。当我点击每个按钮时,会显示地图视图并添加相应的注释引脚。

点按每个地图按钮

时会调用此代码
    double tempLatitude  = [[[myDict objectForKey:key] objectAtIndex:15] doubleValue];
    double tempLongitude = [[[myDict objectForKey:key] objectAtIndex:16] doubleValue];
                                                  // key is the cell index.

         //--** Setting the Latitude and Longitude 
         CLLocationCoordinate2D myCoordinate;

         myCoordinate.latitude  = tempLatitude;
         myCoordinate.longitude = tempLongitude;

         MyMapAnnotation *MyAnnotation = [[[MyMapAnnotation alloc] initWithCoordinate:myCoordinate addressDictionary:nil]autorelease];
         MyAnnotation.title            = [[myDict objectForKey:key] objectAtIndex:1];
         MyAnnotation.subtitle         = [NSString  stringWithFormat:@"%f %f", MyAnnotation.coordinate.latitude, MyAnnotation.coordinate.longitude];

这是MyMapAnnotation的代码,

    @synthesize coordinate = theCoordinate;
    @synthesize title = theTitleAnnotation;
    @synthesize subtitle = theSubTitleAnnotation;



    - (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate addressDictionary:(NSDictionary *)addressDictionary 
    {

      if ((self = [super initWithCoordinate:coordinate addressDictionary:addressDictionary]))
      {
         self.coordinate = coordinate;
      }
         return self;
    }

一切正常。现在,当我点击一个按钮时,会显示相应的注释引脚,当我点击第二个按钮时,前一个引脚仍然存在,并且还添加了第二个注释引脚。

但是

我想要的是,

当我点击每个按钮时,应删除先前的注释引脚,并且只应添加当前的注释引脚

如何识别上一个引脚?

我在哪里可以提供此代码[mapView removeAnnotation:annotationToRemove] ??

编辑:显然,'之前的注释引脚'是'annotationToRemove'。我知道这个。 我的问题是,如何识别此前一个注释引脚以指定为'annotationToRemove'??

谢谢: - )

4 个答案:

答案 0 :(得分:6)

您试试[myMap removeAnntoation:[myMap.annotations objectAtIndex:0]];吗?

修改: 有几种方法可以做到这一点,一种是将tag设置为注释,然后按标签搜索;另一种方法是检查所有注释然后删除你想要的那个,如果你的问题是删除之前添加的注释,你可以调用:

[myMap removeAnntoation:[myMap.annotations lastObject]];

P.S:如果你有myMap.showsUserLocation=YES;看这个:How to remove all annotations from MKMapView without removing the blue dot?

答案 1 :(得分:1)

如果您在另一个视图中显示Mapview意味着只需使用

-(void)viewWillappear
{
[myMap removeAnnotations:toRemove];
}

答案 2 :(得分:1)

您可以使用[MyAnnotation setHidden:YES];关掉销钉,稍后再打开。

答案 3 :(得分:0)

试试这个

-(void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view 
{
   [mapView removeAnnotation:annotationToRemove]
}