Search code examples
iosswiftmkmapviewmapkitmkannotation

viewForAnnotation don't show custom image - iOS9


My viewForAnnotation works fine in iOS8 but don't show the custom pin image in iOS9. The path for image is Ok.
Whats wrong ? thank you !

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
    if annotation is MKUserLocation {
        return nil //return nil so map view draws "blue dot" for standard user location
    }

    let reuseId = "pin"
    var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)

    if pinView == nil {
        pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        pinView!.canShowCallout = true

    }else{
        pinView!.annotation = annotation
    }
    if annotation is MyAnnotation {
        let myPin = annotation as! MyAnnotation

        // Custom image in bubble
        let viewLeftAccessory = UIView(frame: CGRectMake(0, 0, pinView!.frame.size.height + 20, pinView!.frame.size.height + 20))
        let temp = UIImageView(frame: viewLeftAccessory.frame)
        temp.image = UIImage(named: myPin.iconName)
        viewLeftAccessory.addSubview(temp)
        pinView!.leftCalloutAccessoryView = viewLeftAccessory

        pinView!.image = UIImage(named: "BluePin")
        pinView!.rightCalloutAccessoryView = UIButton(type: UIButtonType.DetailDisclosure) as UIView

        return pinView
    }
    return nil
}

Solution

  • Change

    pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
    

    to

    pinView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)