web-dev-qa-db-fra.com

Convertir l'adresse en coordonnées swift

Comment puis-je convertir une adresse String en coordonnées CLLocation avec Swift? Je n'ai pas encore de code, j'ai cherché une solution mais je n'ai encore trouvé personne.

Merci.

12
Paul Bénéteau

C'est assez simple.

    let address = "1 Infinite Loop, Cupertino, CA 95014"

    let geoCoder = CLGeocoder()
    geoCoder.geocodeAddressString(address) { (placemarks, error) in
        guard
            let placemarks = placemarks,
            let location = placemarks.first?.location
        else {
            // handle no location found
            return
        }

        // Use your location
    }

Vous devrez également ajouter et importer le framework CoreLocation.

61
naglerrr

Vous pouvez utiliser CLGeocoder, vous pouvez convertir une adresse (chaîne) en coordonnées et vice versa, essayez ceci:

import CoreLocation

var geocoder = CLGeocoder()
geocoder.geocodeAddressString("your address") {
    placemarks, error in
    let placemark = placemarks?.first
    let lat = placemark?.location?.coordinate.latitude
    let lon = placemark?.location?.coordinate.longitude
    print("Lat: \(lat), Lon: \(lon)")
}
7
Greg

Cela marche

let geocoder = CLGeocoder() 
let address = "8787 Snouffer School Rd, Montgomery Village, MD 20879"
        geocoder.geocodeAddressString(address, completionHandler: {(placemarks, error) -> Void in
            if((error) != nil){
                print("Error", error ?? "")
            }
            if let placemark = placemarks?.first {
                let coordinates:CLLocationCoordinate2D = placemark.location!.coordinate
                print("Lat: \(coordinates.latitude) -- Long: \(coordinates.longitude)")
            }
        })
3
Azhar

Voici ce que j'ai trouvé pour retourner un CLLocationCoordinat2D objet:

func getLocation(from address: String, completion: @escaping (_ location: CLLocationCoordinate2D?)-> Void) {
    let geocoder = CLGeocoder()
    geocoder.geocodeAddressString(address) { (placemarks, error) in
        guard let placemarks = placemarks,
        let location = placemarks.first?.location?.coordinate else {
            return
        }
        completion(location)
    }
}

Disons que j'ai cette adresse:

let address = "Springfield, Illinois"

tilisation

getLocation(from: address) { location in
    print("Location is", location.debugDescription)
    // Location is Optional(__C.CLLocationCoordinate2D(latitude: 39.799372, longitude: -89.644458))

}
1
Adrian