title: Swift: MapKit Custom Image Annotation
body: <p>In my app, I have a mapkit and annotations with different colors. But, there are just three color options (red, green, purple). So, I need to change annotations with custom image.</p>
  
  <p><a href="http://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial" rel="nofollow">I've followed this tutorial to create my mapview</a></p>
  
  <p>Now, I have a <strong>Artwork</strong> class:</p>
  
  <pre><code>import Foundation
  import MapKit
  
  class Artwork: NSObject, MKAnnotation {
      let title: String
      let locationName: String
      let color: String
      let coordinate: CLLocationCoordinate2D
  
      init(title: String, locationName: String, color: String, coordinate: CLLocationCoordinate2D) {
          self.title = title
          self.locationName = locationName
          self.color = color
          self.coordinate = coordinate
  
          super.init()
      }
  
      var subtitle: String {
          return locationName
      }
  
      // pinColor for disciplines: Sculpture, Plaque, Mural, Monument, other
      func pinColor() -&gt; MKPinAnnotationColor  {
          switch color {
          case "Red":
              return .Red
          case "Purple":
              return .Purple
          case "Green":
              return .Green
          default:
              return .Green
          }
      }
  }
  </code></pre>
  
  <p>Also, <strong>VCMapView.swift</strong> file:</p>
  
  <pre><code>import Foundation
  import MapKit
  
  extension MapViewController: MKMapViewDelegate {
  
      // 1
      func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -&gt; MKAnnotationView! {
          if let annotation = annotation as? Artwork {
              let identifier = "pin"
              var view: MKPinAnnotationView
              if let dequeuedView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier)
                  as? MKPinAnnotationView { // 2
                      dequeuedView.annotation = annotation
                      view = dequeuedView
              } else {
                  // 3
                  view = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
                  view.canShowCallout = true
                  view.calloutOffset = CGPoint(x: -5, y: 5)
                  view.rightCalloutAccessoryView = UIButton.buttonWithType(.DetailDisclosure) as! UIView
              }
              view.pinColor = annotation.pinColor()
              return view
          }
          return nil
      }
  }
  </code></pre>
  
  <p>And I can add pins on my map like this in <strong>viewdidload()</strong></p>
  
  <pre><code>// show artwork on map
  let artwork = Artwork(title: "\(self.plate)",
  locationName: "\(self.location)",
  color: "\(self.color)",
  coordinate: CLLocationCoordinate2D(latitude: latitude, longitude: longtitude))
  
  self.mapView.addAnnotation(artwork)
  </code></pre>
  
  <p>All work perfect but need to add custom image to this architecture,  which part should I modify I am not sure.</p>