Cómo dibujar una superposition de polígonos utilizando MapKit y Swift

Estoy tratando de get el siguiente código para dibujar un polígono en el map, pero por alguna razón no funciona. ¿Qué me equivoqué aquí?

import UIKit import MapKit class ViewController: UIViewController { @IBOutlet weak var mapView: MKMapView! override func viewDidLoad() { super.viewDidLoad() let initialLocation = CLLocation(latitude: 49.140838, longitude: -123.127886) centerMapOnLocation(initialLocation) addBoundry() } func addBoundry() { var points=[CLLocationCoordinate2DMake(49.142677, -123.135139),CLLocationCoordinate2DMake(49.142730, -123.125794),CLLocationCoordinate2DMake(49.140874, -123.125805),CLLocationCoordinate2DMake(49.140885, -123.135214)] let polygon = MKPolygon(coordinates: &points, count: points.count) mapView.addOverlay(polygon) } let regionRadius: CLLocationDistance = 1000 func centerMapOnLocation(location: CLLocation) { let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, regionRadius * 2.0, regionRadius * 2.0) mapView.setRegion(coordinateRegion, animated: true) } } func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! { if overlay is MKPolygon { let polygonView = MKPolygonRenderer(overlay: overlay) polygonView.strokeColor = UIColor.magentaColor() return polygonView } return nil } 

El método rendererForOverlay debe estar dentro de la definición de class ViewController . Parece que lo ha implementado como una function global.

Además, asegúrese de haber definido el controller de vista para que sea el delegate de la vista de map. Probablemente sea más fácil hacerlo en IB, pero también puede hacerlo en viewDidLoad :

 mapView.delegate = self 

Por el bien de futuros lectores, tenga en count que en Swift 3, la firma de mapView(_:renderFor:) ha cambiado:

 func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { ... }