title: Opening MapKit pin in Maps
body: <p>I can't seem to get the final part of Ray Wenderlich's mapkit tutorial to work.  I get the pins to display correctly but when I click on the pin, it doesn't open in Maps as I would like it too.  Here is the link to the full tutorial (<a href="http://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial" rel="nofollow">Link</a>)</p>
  
  <p>And here is my code:</p>
  
  <pre><code>import Foundation
  import UIKit
  import MapKit
  import AddressBook
  
  
  class CroquisMapView: UIViewController, MKMapViewDelegate {
      var section : Int?
      var index : Int?
  
      @IBOutlet weak var mapView: MKMapView!
  
      let regionRadius: CLLocationDistance = 1000
      func centerMapOnLocation(location: CLLocation) {
          let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,
              regionRadius * 2.0, regionRadius * 2.0)
          mapView.setRegion(coordinateRegion, animated: true)
      }
  
  
      override func viewDidLoad() {
          mapView.delegate = self
  
          let coordenadas = croquisGruposArray[section!].items[index!].coordenadas
          let coordenadasArray = coordenadas!.characters.split{$0 == ","}.map(String.init)
          guard let lat = NSNumberFormatter().numberFromString(coordenadasArray[0])?.doubleValue,
              let long = NSNumberFormatter().numberFromString(coordenadasArray[1])?.doubleValue else {
                  return
          }
          let initialLocation = CLLocation(latitude: lat, longitude: long)
          let artwork = Artwork(title: "\(croquisGruposArray[section!].items[index!].descripcion!)",
              locationName: "\(globalLigaNombre!)",
              discipline: "Futbol",
              coordinate: CLLocationCoordinate2D(latitude: lat, longitude: long))
          mapView.addAnnotation(artwork)
          centerMapOnLocation(initialLocation)
      }
  }
  
  class Artwork: NSObject, MKAnnotation {
      let title: String?
      let locationName: String
      let discipline: String
      let coordinate: CLLocationCoordinate2D
  
      init(title: String, locationName: String, discipline: String, coordinate: CLLocationCoordinate2D) {
          self.title = title
          self.locationName = locationName
          self.discipline = discipline
          self.coordinate = coordinate
  
          super.init()
      }
  
      var subtitle: String? {
          return locationName
      }
  
  
      func mapItem() -&gt; MKMapItem {
          let addressDictionary = [String(kABPersonAddressStreetKey): locationName]
          let placemark = MKPlacemark(coordinate: coordinate, addressDictionary: addressDictionary)
  
          let mapItem = MKMapItem(placemark: placemark)
          mapItem.name = title
  
          return mapItem
      }
  
      func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) {
              print("CLICKED")
              let location = view.annotation as! Artwork
              let launchOptions = [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving]
              location.mapItem().openInMapsWithLaunchOptions(launchOptions)
      }
  }
  
  extension CroquisMapView {
  
      // 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(type: .DetailDisclosure) as UIView
              }
              return view
          }
          return nil
      }
  }
  </code></pre>