[FIXED] Wie entferne ich den vorherigen Anmerkungs-Pin, wenn ich einen anderen hinzufüge?

Ausgabe

Ich habe eine UITableView und jede Zelle enthält eine Kartenschaltfläche. Wenn ich auf jede Schaltfläche tippe, wird die Kartenansicht angezeigt und die entsprechende Anmerkungsnadel hinzugefügt.

Dieser Code wird aufgerufen, wenn ich auf jede Kartenschaltfläche tippe,

    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];

Und das ist der Code von 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;
    }

Alles funktioniert gut. Wenn ich jetzt auf eine Schaltfläche tippe, wird der entsprechende Anmerkungs-Pin angezeigt, und wenn ich auf die zweite Schaltfläche tippe, ist der vorherige Pin immer noch da und der zweite Anmerkungs-Pin wird ebenfalls hinzugefügt.

Aber

Was ich will ist,

Wenn ich auf jede Schaltfläche tippe, sollte der vorherige Anmerkungs-Pin entfernt und nur der aktuelle Anmerkungs-Pin hinzugefügt werden .

Wie kann ich den vorherigen Pin identifizieren?

Und wo kann ich diesen Code eingeben [mapView removeAnnotation:annotationToRemove]??

BEARBEITEN: Offensichtlich ist der „vorherige Annotationspin“ der „AnnotationToRemove“. Ich weiß das. Meine Frage lautet: Wie kann ich diesen vorherigen Anmerkungsstift identifizieren, um ihn als “AnnotationToRemove” anzugeben?

Vielen Dank 🙂

Lösung

hast du es mit probiert [myMap removeAnntoation:[myMap.annotations objectAtIndex:0]];?

BEARBEITEN : Es gibt mehrere Möglichkeiten, dies zu tun. Eine besteht darin, eine tagAnmerkung auf die Anmerkung zu setzen und sie dann nach Tag zu durchsuchen. Eine andere Möglichkeit besteht darin, alle Anmerkungen zu überprüfen und dann die gewünschten zu entfernen. Wenn Ihr Problem darin besteht, die zuvor hinzugefügte Anmerkung zu entfernen, können Sie Folgendes aufrufen:

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

PS: Wenn Sie das hier gesehen haben myMap.showsUserLocation=YES;: Wie entferne ich alle Anmerkungen aus MKMapView, ohne den blauen Punkt zu entfernen? .


Beantwortet von –
Mat


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like