2

我有一个存储在 Core Data 中的坐标列表,以及它们的保存时间,格式如下:

游戏 - 整数 16

纬度 - 双

经度 - 双倍

时间 - 日期

我已经设法获取用户的位置并将其存储在 Core Data 中而没有问题,但我无法检索它并将其显示在地图上。我已经尝试寻找合适的教程,但我找不到任何结合核心数据和查询的 MKPolyline 方面的东西。一般来说,我对编码很陌生,我不能完全对齐两者。

所以,我知道以下代码将帮助我在地图上绘图:

var coordinates = locations.map({ (location: CLLocation) -> 
CLLocationCoordinate2D in
    return location.coordinate
})

var polyline = MKPolyline(coordinates: &coordinates, 
                        count: locations.count)

我的代码中已经有了这个来获取核心数据:

@IBOutlet weak var mapView: MKMapView!

var locationsList: [Locations] = []

var contextMap = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!

    var requestMap = NSFetchRequest(entityName: "Locations")
    let predMap = NSPredicate(format: "game = %d", gameNumber)
    requestMap.predicate = predMap
    requestMap.sortDescriptors = [NSSortDescriptor(key:"time", ascending: false)]

    self.locationsList = context.executeFetchRequest(requestMap, error: nil)! as [Locations]

但是我不能将两者结合起来,以便从 Core Data 中获取我的坐标并将它们放在地图上。

任何帮助都会很棒-谢谢。

4

1 回答 1

1

您已经有一个CLLocation坐标数组并构建了一个MKPolyline. 到目前为止一切都很好。

现在您需要告诉在MKMapView地图上绘制该折线:

...
var polyline = MKPolyline(coordinates: &coordinates, count: locations.count)

// add the overlay
self.mapView.addOverlay(polyLine, level: MKOverlayLevel.AboveLabels)
...

要绘制覆盖,您需要创建一个MKOverlayRenderer

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
}
于 2015-03-23T07:39:59.850 回答