Ho il seguente codice in Swift per aggiungere un MKPolyline a un MapView. XCode non mi dice che c'è un problema e, per quanto ho letto, dovrebbe funzionare.MKPolyLine non appare su MapView in Swift
sbocco per i MapView:
@IBOutlet weak var mapView: MKMapView!
variabile per contenere le coordinate:
var coordinates: [CLLocationCoordinate2D] = []
ottenere le mie coordinate salvati da Core Data:
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]
Aggiungi le coordinate da Core Data al mio nuovo array:
Creare la polilinea:
var polyLine = MKPolyline(coordinates: &coordinates, count: coordinates.count)
Aggiungi la sovrapposizione:
self.mapView.addOverlay(polyLine, level: MKOverlayLevel.AboveRoads)
aggiungerlo alla 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
}
ho semplicemente ottenere un MapView vuoto. Posso stampare l'array di coordinate sulla console, quindi so che i dati sono stati aggiunti. Qualche idea?
Il vostro viewController conforme al protocollo 'MKMapViewDelegate'? – zisoft
L'uscita delegati della vista mappa è collegata al controller della vista? Dopo addOverlay, self.mapView.overlays.count dice 1? Il metodo rendererForOverlay viene effettivamente chiamato (inserisci un breakpoint o println lì)? Le coordinate sono valide/a ritroso (succede)? Non correlato, ma non dovrebbe 'per l'indice in 1 .. <' be' per indice in 0 .. <'? – Anna
Grazie a entrambi. Anna, ho aggiunto il punto di interruzione e sembra che non venga chiamato. Potrebbe essere una domanda stupida, ma come posso risolverlo? Sono sicuro che sia semplice. Riguardo l'indice in 1 commento, mi stava dando un errore quando avevo 0 lì prima - che ora sembra funzionare con 1. –