Mam następujący kod w Swift, aby dodać MKPolyline do MapView. XCode nie mówi mi, że jest problem, i o ile przeczytałem, to powinno działać.MKPolyLine nie pojawia się na MapView w Swift
Outlet dla MapView:
@IBOutlet weak var mapView: MKMapView!
Zmienna do przechowywania współrzędne:
var coordinates: [CLLocationCoordinate2D] = []
dostać moje zapisane współrzędne z danych Core:
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]
Dodaj współrzędnych z danych Core do mojej nowej tablicy:
Tworzenie polilinii:
var polyLine = MKPolyline(coordinates: &coordinates, count: coordinates.count)
Dodaj nakładkę:
self.mapView.addOverlay(polyLine, level: MKOverlayLevel.AboveRoads)
Dodaj go do 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
}
po prostu dostać pusty MapView. Mogę wydrukować tablicę współrzędnych do konsoli, więc wiem, że dane zostały dodane. Jakieś pomysły?
Czy Twój viewController zgodne z protokołem MKMapViewDelegate' '? – zisoft
Czy wylot przedstawicielski widoku mapy jest podłączony do kontrolera widoku? Po addOverlay, czy self.mapView.overlays.count mówi 1? Czy metoda rendererForOverlay jest wywoływana (wstawić tam punkt przerwania lub println)? Czy współrzędne są prawidłowe/cofnięte (tak się dzieje)? Niepowiązane, ale nie powinno "dla indeksu w 1 .. <' być 'dla indeksu w 0 .. <'? – Anna
Dziękuję. Anna, dodałem punkt przerwania i wygląda na to, że nie jest on wywoływany. Może to głupie pytanie, ale jak mogę to rozwiązać? Jestem pewien, że to proste. Jeśli chodzi o indeks w 1 komentarzu, to dawał mi błąd, gdy miałem tam już 0 - to teraz wydaje się pracować z 1. –