MKPolyLine не отображается в MapView в Swift
у меня есть следующий код в Swift, чтобы добавить MKPolyline в MapView. XCode не говорит мне, что есть проблема, и, насколько я читал, это должно работать.
выход для MapView:
@IBOutlet weak var mapView: MKMapView!
переменная для удержания координат:
var coordinates: [CLLocationCoordinate2D] = []
получить мои сохраненные координаты из основных данных:
var contextMap = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
var requestMap = NSFetchRequest(entityName: "Locations")
let predMap = NSPredicate(format: "game = %d", passedGameNumber)
requestMap.predicate = predMap
requestMap.sortDescriptors = [NSSortDescriptor(key:"time", ascending: false)]
    self.locationsList = contextMap.executeFetchRequest(requestMap, error: nil)! as [Locations]
добавить координаты из основных данных в мой новый массив:
for index in 1..<self.locationsList.count{
    var lat = Double(self.locationsList[index].latitude)
    var long = Double(self.locationsList[index].longitude)
    var coordinatesToAppend = CLLocationCoordinate2D(latitude: lat, longitude: long)
    coordinates.append(coordinatesToAppend)
}
создать полилиния:
var polyLine = MKPolyline(coordinates: &coordinates, count: coordinates.count)
добавить оверлей:
self.mapView.addOverlay(polyLine, level: MKOverlayLevel.AboveRoads)
добавьте его в MapView:
func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
    if overlay.isKindOfClass(MKPolyline) {
        // draw the track
        let polyLine = overlay
        let polyLineRenderer = MKPolylineRenderer(overlay: polyLine)
        polyLineRenderer.strokeColor = UIColor.blueColor()
        polyLineRenderer.lineWidth = 2.0
        return polyLineRenderer
    }
    return nil
}
Я просто получаю пустой MapView. Я могу распечатать массив координат на консоли, поэтому я знаю, что данные были добавлены. Есть идеи?
2 ответов
как опубликовано в комментариях, код в вопросе был в порядке. Я просто не делегат.
mapView.delegate = self
вышеуказанный метод будет записан следующим образом в Swift3:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
        if overlay.isKind(of: MKPolyline.self) {
            // draw the track
            let polyLine = overlay
            let polyLineRenderer = MKPolylineRenderer(overlay: polyLine)
            polyLineRenderer.strokeColor = UIColor.blue
            polyLineRenderer.lineWidth = 2.0
            return polyLineRenderer
        }
        return MKPolylineRenderer()
    }