У меня есть следующий код в Swift, чтобы добавить MKPolyline в MapView. XCode не говорит мне, что есть проблема, и, насколько я читал, это должно работать.MKPolyLine не отображается в MapView в Swift
Выход для 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]
Добавить координаты из основных данных к моему новому массиву:
Создать полилинию:
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. Я могу напечатать массив координат на консоли, поэтому я знаю, что данные были добавлены. Есть идеи?
Соответствует ли ваш ViewController к 'протоколу MKMapViewDelegate'? – zisoft
Отправляется ли выход делегата карты на контроллер вида? После addOverlay делает self.mapView.overlays.count say 1? Вызывается ли метод rendererForOverlay (ставьте точку останова или println)? Являются ли координаты действительными/обратными (это происходит)? Несвязанный, но не должен 'для индекса в 1 .. <' быть 'для индекса в 0 .. <'? – Anna
Спасибо. Анна, я добавил точку останова, и кажется, что ее не называют. Может быть, глупый вопрос, но как я могу это разрешить? Я уверен, что это просто. Что касается индекса в 1 комментарий, это давало мне ошибку, когда у меня было 0 до этого - теперь, похоже, работает с 1. –