Как удалить предыдущий контакт аннотации при добавлении другого? - PullRequest
3 голосов
/ 14 июля 2011

У меня есть UITableView, и каждая ячейка содержит кнопку карты.Когда я нажимаю на каждую кнопку, отображается вид карты и добавляется соответствующий пин-код аннотации.

Этот код вызывается, когда я нажимаю на каждую кнопку карты,

    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 ]

6 голосов
/ 14 июля 2011

Вы пробовали с [myMap removeAnntoation:[myMap.annotations objectAtIndex:0]];?

EDIT : Есть несколько способов сделать это, один из них - установить tag для аннотации, а затем выполнить поиск по тегу; Другой способ - проверить все аннотации, а затем удалить то, что вы хотите. Если ваша проблема заключается в удалении предыдущей аннотации, вы можете позвонить:

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

P.S .: если у вас есть myMap.showsUserLocation=YES; посмотрите это: Как удалить все аннотации из MKMapView без удаления синей точки? .

1 голос
/ 03 декабря 2011

Вы можете использовать [MyAnnotation setHidden: YES]; выключить штырь и включить его позже.

1 голос
/ 14 июля 2011

Если вы показываете MapView в другом виде, просто используйте

-(void)viewWillappear
{
[myMap removeAnnotations:toRemove];
}
0 голосов
/ 14 июля 2011

попробуйте

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