Search code examples
iosswift3mkmapviewmkannotationview

How to set custom pin image in Mapview swift ios?


@IBOutlet weak var map: MKMapView!
override func viewDidLoad() {
    map.delegate = self
    showAlarms()
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

func showAlarms(){

    map.region.center.latitude = 10.733051
    map.region.center.longitude = 76.763042
    map.region.span.latitudeDelta = 1
    map.region.span.longitudeDelta = 1


}
func mapView(mapView: MKMapView!,
             viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {

    if annotation is MKUserLocation {
        //return nil so map view draws "blue dot" for standard user location
        return nil
    }

    let reuseId = "pin"
    var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKPinAnnotationView
    if pinView == nil {
        pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        pinView!.canShowCallout = true
        //pinView!.animatesDrop = true
        pinView!.image = UIImage(named:"annotation")!

    }
    else {
        pinView!.annotation = annotation
    }

    return pinView
}

I need to show to a custom pin image for my mapview in swift ios. The custom image is not loading neither the pin. I have an image named "annotation" which I need to load in my mapview.


Solution

  •   mapview.delegate = self
    
        func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    guard !(annotation is MKUserLocation) else {
        return nil
    }
    
     let annotationIdentifier = "Identifier"
     var annotationView: MKAnnotationView?
     if let dequeuedAnnotationView = mapView.dequeueReusableAnnotationView(withIdentifier: annotationIdentifier) {
        annotationView = dequeuedAnnotationView
        annotationView?.annotation = annotation
    }
    else {
        annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier)
        annotationView?.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)
    }
    
     if let annotationView = annotationView {
    
        annotationView.canShowCallout = true
        annotationView.image = UIImage(named: "yourImagename”)
    }
      return annotationView
    }