swiftfirebasefirebase-realtime-databasecllocationdistance

Distance from Current Location to Annotation. (Firebase)


I want to have a the distance from my Currentlocation to a annotation that's in the FireData Base. I tried to make it word but i can't ;(. I would like to have the distance between the two locations in a var. I hope you guys can help me.

func reload(){
    //get data
    Database.database().reference().child("Rollerbanken").observe(.value, with: { (snapshot) in



        for item in snapshot.children{

            if let value = snapshot.value as? Dictionary<String, Any> {

                for key in value.keys {
                    if let itemDict = value[key] as? Dictionary<String, AnyObject> {

                        let annotation = MKPointAnnotation()
                        annotation.title = itemDict["TypeControle"] as! String
                        let tijd = itemDict["Tijd"] as! String
                        annotation.subtitle = "Geplaatst om \(tijd)"

                        let getLatitude = itemDict["Latitude"] as? String
                        let getLongitude = itemDict["Longitude"] as? String
                        if let lat = getLatitude, let long = getLongitude {
                            annotation.coordinate = CLLocationCoordinate2D(latitude: Double(lat)!, longitude: Double(long)!)

                            self.map.addAnnotation(annotation)

                            let directionRequest = MKDirectionsRequest()
                            directionRequest.source = MKMapItem.forCurrentLocation()
                            if #available(iOS 10.0, *) {
                                directionRequest.destination = MKMapItem(placemark: MKPlacemark.init(coordinate: CLLocationCoordinate2DMake(Double(lat)!, Double(long)!)))
                            } else {
                                // Fallback on earlier versions
                            }
                            directionRequest.transportType = .walking
                            let direction = MKDirections(request: directionRequest)
                            direction.calculate(completionHandler: { (response, error) in
                                if error != nil {
                                    print("Error while build route")
                                } else {
                                    let route = response?.routes.last
                                    let distance = route?.distance
                                    print(distance)
                                }
                            })
                        }
                    }
                }
            }
        }
    })
}

Here is my Structure: Structure


Solution

  • Try to use this code. Don't forget to enable your current location on map

    let directionRequest = MKDirectionsRequest()
            directionRequest.source = MKMapItem.forCurrentLocation()
            directionRequest.destination = MKMapItem(placemark: MKPlacemark.init(coordinate: CLLocationCoordinate2DMake(YOURPOINTLATITUDE, YOURPOINTLONGITUDE)))
            directionRequest.transportType = .walking
            let direction = MKDirections(request: directionRequest)
            direction.calculate(completionHandler: { (response, error) in
                if error != nil {
                    print("Error while build route")
                } else {
                    let route = response?.routes.last
                    let distance = route?.distance