不断更新新数据的地图

时间:2018-04-09 13:28:07

标签: ios swift mapkit

我有一个跟踪器应用程序,它从服务器抓取数据,所以我写了这个请求:

internal func updateOnlineTrack(for track: Track,
                            success: @escaping ((Track) -> Swift.Void),
                            failure: @escaping ((ServerRequestError?) -> Swift.Void)) {

let url = BaseURL.ver_2 + "tracks/points/new"
let parameters: Parameters = ["token" : ServerManager.manager.verification.token,
                              "data" : "\(track.id),\(track.sLastId)"]

Alamofire.request(url, parameters: parameters).responseJSON { response in

    switch response.result {

    case .success(let value):

        let responseJSON = JSON(value)
        print("NEW POINTS \n\(responseJSON)")

        if let points = responseJSON["\(track.id)"]["points"].arrayObject {

            for point in points {
                guard let newPoint = Track.Point(withResponseObject: point as? [AnyObject]) else { return }
                track.points?.append(newPoint)
            }
           track.sLastId = responseJSON["\(track.id)"]["last_id"].stringValue
        }

        success(track)


    case .failure(let error):

        failure(ServerRequestError(code: 0, message: error.localizedDescription))
        print(ServerRequestError(code: 0, message: error.localizedDescription))
    }
}

它基本上抓取新数据并将其附加到一个新的所谓“轨道”

问题是我应该在哪里调用此方法来不断使用新数据更新我的地图?在viewDidLoad中尝试使用计时器,但没有运气

No

图片用于说明正在发生的事情。我有可以转换为CLLocationCoordinates的坐标,但是如何将它附加到现有路线?

1 个答案:

答案 0 :(得分:1)

您不必在viewDidAppear或更进一步延迟请求,因为viewDidLoad中的放置函数调用在加载数据期间是最佳的,视图将正确呈现显示所以检查repeats:true的计时器,并且关于追加,您可以保存绘制路径中的最后一个点,并将其挂钩到您从响应中获得的第一个点,并将新的折线添加到地图