我有一个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'??
谢谢: - )
答案 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]
}