2016-07-29 14 views

Antwort

1

ich in ähnlichem Problem ging MKpinAnnotationView verwenden. Auf jeden Fall für iOS10/swift funktioniert dieser Code für Bilder:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 

    let Identifier = "CAR" 
    var annotationView: MKAnnotationView? 

    if let dequeued = mapView.dequeueReusableAnnotationView(withIdentifier: Identifier) { 
     annotationView = dequeued 
    } 
    else { 
     let av = MKAnnotationView(annotation: annotation, reuseIdentifier: Identifier) 
     annotationView = av 
    } 

    annotationView!.annotation = annotation 
    annotationView!.image = UIImage(named: "Audia4") 
    annotationView!.canShowCallout = true 

    return annotationView 
} 

Wenn Sie Bild anpassen möchten: (voraus, dass Sie ein Auto classe haben, die MKannotation Protokoll gehorcht):

if let car = annotation as? Car{ 
     let img = car.image 
     annotationView.image = img 
    }else{ 
     annotationView.image = nil // clear it. 
    } 

wo "Car" ist:

0

Ich habe das gleiche Problem erlebt - benutzerdefinierte Annotation Bilder nicht auf iOS 10 angezeigt, aber arbeitete auf Versionen vor.

Für mich war das Problem, dass ich eine MKPinAnnotationView verwendet.

von Schalt:

pin = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:pinid]; 
pin.image = image; 

zu

pin = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:pinid]; 
pin.image = image; 

das benutzerdefinierte Bild wurde wieder auf iOS angezeigt 10.

1

ich in diese selbst lief. Meine benutzerdefinierte Unterklasse von MKAnnotationView stützte sich auf einige Initialisierung in meinem Override von initWithFrame: und bis zu iOS 10, Initialisierung der AnnotationView durch Aufruf initWithAnnotation:reuseIdentifier: würde schließlich in initWithFrame :. Ab iOS 10 wird initWithFrame: jedoch nie aufgerufen. Das Ergebnis davon war, dass meine benutzerdefinierten Anmerkungen einen Rahmen von (0, 0, 0, 0) hatten und nicht angezeigt wurden. Hinzufügen

[self setFrame:CGRectMake(0, 0, someWidth, someHeight]; 

innen initWithAnnotation:reuseIdentifier: machte die Anmerkungen erscheinen wieder unter iOS10.

0

Wie andere bereits gesagt haben, scheint MKPinAnnotationView in iOS10 nicht zu funktionieren. Sie müssen Ihre MKPinAnnotationViews in MKAnnotationViews ändern, was für mich kein Problem war, nur sie zu wechseln. Beispiel Swift-Code:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 
    var view: MKAnnotationView 
    view = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId) 
    view.canShowCallout = true 
    view.frame = mapView.frame 
    view.image = UIImage(named: "<nameHere>") 
    return view 
    }