2012-08-01 3 views
16

Im Moment bearbeite ich eine Kartenansicht mit Anmerkungen und zeige auch den aktuellen Standort des Benutzers an. Mit der Methode "viewForAnnotation" überschreibt es alle Anmerkungen mit dem roten Standardstift, aber ich möchte die Ansichten für die anderen Anmerkungen zurückgeben, aber den Benutzerstandort als blauen Standardbeacon beibehalten. Gibt es eine Möglichkeit, dies einfach zu tun, oder muss ich eine neue Anmerkungsansicht erstellen und die richtige zurückgeben, abhängig von der Anmerkung?So verhindern Sie, dass die Methode viewForAnnotation den Standardbenutzerstandort überschreibt blue beacon in iOS

Im Moment habe ich so etwas wie:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    if (annotation.coordinate == locationManager.location.coordinate) { 

return nil; 

    }else { 

    MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Beacon"]; 

    // Button 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
    button.frame = CGRectMake(0, 0, 23, 23); 
    annotationView.rightCalloutAccessoryView = button; 


    annotationView.canShowCallout = YES; 

    return annotationView; 
} 
} 

Aber ich kann die beide nicht gleichsetzen, weil ich nicht die Eigenschaft aus dem Anmerkungs Argumente koordinieren bekommen.

Kennt jemand irgendwelche Lösungen dazu?

Antwort

28

Schauen Sie sich die Dokumentation hier:

http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapViewDelegate_Protocol/MKMapViewDelegate/MKMapViewDelegate.html

Wie es heißt:

Wenn das Objekt im Annotation-Parameter eine Instanz der MKUserLocation Klasse ist, können Sie eine benutzerdefinierte bieten anzeigen, um den Standort des Benutzers anzuzeigen. Um den Standort des Benutzers mit der Standardsystemsicht anzuzeigen, geben Sie nil zurück.

So können Sie eine bedingte hinzuzufügen für das zu überprüfen:

if([annotation isKindOfClass: [MKUserLocation class]]) { 
    return nil; 
} 
+0

lullll im dumm, sehr geschätzt, war ich alle diese dummen Arbeit arounds versucht, aber ja ... –

+0

Vielen Dank! Ich muss lernen, mit der Dokumentation von Apple nicht mehr so ​​ein Neuling zu sein –

Verwandte Themen