2013-04-02 4 views
18

Ich bin neu bei Maps Concept.So wählen Sie einen Map-Pin programmgesteuert aus

Bitte finden Sie das beigefügte Bild einmal.

enter image description here

, wenn ich den „Stift“ klicken i Nachricht bin immer sagt: „Ihr Lächeln Bewundern“ oder einen beliebigen Text ..... Jetzt möchte ich wie ... wenn wir die Tabellenansicht wählen, ich brauche um diese Nachricht für diesen Pin zu erhöhen (ohne Benutzerinteraktion für diesen Pin) ...

Ich verwende unten Code für diese Karten und Pins.

-(void) viewWillAppear:(BOOL)animated 
{ 
[super viewWillAppear:YES]; 
customLocation.latitude=[casesobjc.latitude_string doubleValue]; 
     customLocation.longitude=[casesobjc.longitude_string doubleValue]; 
MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:casesobjc.locationForMap_string andCoordinate:customLocation]; 
[mapView addAnnotation:newAnnotation]; 
} 
- (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id<MKAnnotation>) annotation { 
MKPinAnnotationView *pin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier: @"annotation_ID"]; 
if (pin == nil) { 
     pin = [[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: @"annotation_ID"]; 
    } else { 
     pin.annotation = annotation; 
    } 
    pin.pinColor = MKPinAnnotationColorPurple; 
    pin.animatesDrop = YES; 
    pin.canShowCallout=YES; 
return pin; 
} 

Jetzt werde ich alle Pins einmal wie unten zeigen.

enter image description here

Wie tun, wenn wir i auf Tabellenansicht klicken muß, wie der Titel für diesen Stift zeigen, wie wir zeigen, wenn wir einen Stift wählen?

Vielen Dank im Voraus

+0

Haben Sie die Anmerkungs-Tap-Ansicht mit benutzerdefiniertem Bild/benutzerdefinierter Map-Pin-Call-Out-Ansicht erwähnt? – Spynet

+0

Ich habe nicht verstanden? ... Ich habe diesen Code verwendet, aber funktioniert nicht .. d. H., CustomLocation.latitude = appdelegate.appDelegateLatitude; customLocation.longitude = appdelegate.appDelegateLongitude; MapViewAnnotation * newAnnotation = [[MapViewAnnotation alloc] initWithTitle: casesobjc.locationForMap_string andCoordinate: customLocation]; [mapView selectAnnotation: newAnnotation animiert: YES]; @Spynet – Babul

+0

Übergeben Sie einfach den Titelnamen, wenn die Zeile ausgewählt ist, und legen Sie den Titel für Annotation – krishh

Antwort

25

Die Methode, die Sie suchen, ist selectAnnotation:.

In Ihrer didSelectRowAtIndexPath müssen Sie die Annotation finden, die der Tabellenzeile zugeordnet ist.

Sobald Sie es finden, können Sie es sagen, um es auszuwählen, indem Sie:

[mapView selectAnnotation:foundAnnotation animated:YES]; 
+0

Ich denke, ich habe ein ziemlich ähnliches Problem. Könnten Sie bitte helfen, einen Blick in meine [Frage] zu werfen (http://stackoverflow.com/questions/28144466/how-to-select-map-pin-with-tapping-table-row-that-associates-with-it)) ebenfalls? Ich kann es einfach nicht herausfinden, besonders, wie man die Anmerkung findet, die mit der Tabellenreihe verbunden ist. – SanitLee

0

Das gleiche wie die Objective C Antwort, in der Tableview Sie haben eine Liste von Anmerkungen. In Swift im didSelectRow:

Für Swift 4:

// annotations would be the array of annotations - change to your required data sets name 
let selectedAnnotation = annotations[indexPath.row] 
self.mapView.selectAnnotation(selectedAnnotation, animated: true) 

kurz und einfach.