Получить расстояние между двумя точками Swift 5 - PullRequest
1 голос
/ 26 сентября 2019

Я пытаюсь определить расстояние между точками буксировки, текущим местоположением и другой точкой.Все данные рассчитаны отлично, но я не могу получить значение, чтобы присвоить его объекту, а затем создать таблицу.

Расстояние создается позже, чем объект, даже если я делаю асинхронную очередь.

Не могу найти проблему, может быть, я слишком нов в этом.

Спасибо за помощь


             DispatchQueue.global(qos: .utility).async {
                for snap in snapshot.children {
                    let postSnap = snap as! DataSnapshot
                    if let dict = postSnap.value as? [String:AnyObject] {

                        let farcoordenadas =  dict["coordenadas"] as!  [Double]
                        let lat = (farcoordenadas[0] as! Double)
                        let long = (farcoordenadas[1] as! Double)
                        let location = CLLocationCoordinate2D(latitude: lat, longitude: long)
                        let farcalle = (dict["calle"] as! String)
                        let fartelefono = (dict["telefono"] as! String)
                        let farpoblacion = (dict["poblacion"] as! String)
                        let farhorario = (dict["horario"] as! String)

                        let request = MKDirections.Request()
                        request.source = MKMapItem(placemark: MKPlacemark(coordinate:self.userLocation!))
                        request.destination = MKMapItem(placemark: MKPlacemark(coordinate: location))
                        request.transportType = .automobile
                       let directions = MKDirections(request: request)



                          directions.calculate { (response, error)  -> Void in
                                       if let response = response, let route = response.routes.first {
                                           print(route.distance)
                                           //converts from meters to miles
                                           var routeDistance = route.distance/1000
                                           //formats the string to two decimals.
                                           distancia = String(format: "%.0f" , routeDistance)
                                       }
                                return
                        }



                        DispatchQueue.main.async {
                            let farmaciapueblo = Farmacia(fecha:dateString, horario:farhorario, poblacion: farpoblacion, telefono:fartelefono, calle:farcalle, coordenadas:farcoordenadas, distancia:distancia)
                            self.farmaciasrural.append(farmaciapueblo)
                            self.farmaciasrural.sort(by: myLocation) // mutating version

                            self.activityIndicator.stopAnimating()
                            self.tableView.reloadData()
                        }
                    }



                }
            }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...