Mon entrée est une latitude et une longitude. J'ai besoin d'utiliser la fonction reverseGeocodeLocation
de Swift, pour me donner la sortie de la localité. Le code que j'ai essayé d'utiliser est
println(geopoint.longitude)
println(geopoint.latitude)
var manager : CLLocationManager!
var longitude :CLLocationDegrees = geopoint.longitude
var latitude :CLLocationDegrees = geopoint.latitude
var location: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
println(location)
CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: {(placemarks, error) -> Void in
println(manager.location)
if error != nil {
println("Reverse geocoder failed with error" + error.localizedDescription)
return
}
if placemarks.count > 0 {
let pm = placemarks[0] as CLPlacemark
println(pm.locality)
}
else {
println("Problem with the data received from geocoder")
}
dans les journaux que je reçois
//-122.0312186
//37.33233141
//C.CLLocationCoordinate2D
//fatal error: unexpectedly found nil while unwrapping an Optional value
Il semble que le CLLocationCoordinate2DMake
function échoue, ce qui provoque alors l'erreur fatale dans la fonction reverseGeocodeLocation
. Ai-je foutu le format quelque part?
vous n'inversez jamais le géocodage de l'emplacement mais vous passez dans manager.location.
voir: CLGeocoder().reverseGeocodeLocation(manager.location, ...
Je suppose que c'était une erreur de copier-coller et que c'est le problème - le code lui-même semble bon - presque;)
var longitude :CLLocationDegrees = -122.0312186
var latitude :CLLocationDegrees = 37.33233141
var location = CLLocation(latitude: latitude, longitude: longitude) //changed!!!
println(location)
CLGeocoder().reverseGeocodeLocation(location, completionHandler: {(placemarks, error) -> Void in
println(location)
if error != nil {
println("Reverse geocoder failed with error" + error.localizedDescription)
return
}
if placemarks.count > 0 {
let pm = placemarks[0] as! CLPlacemark
println(pm.locality)
}
else {
println("Problem with the data received from geocoder")
}
})