在Swift中反转地理编码位置

我的input是一个经纬度。 我需要使用swift的reverseGeocodeLocation函数,给我地方的输出。 我试过的代码是

  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") } 

在我得到的日志

 //-122.0312186 //37.33233141 //C.CLLocationCoordinate2D //fatal error: unexpectedly found nil while unwrapping an Optional value 

看来, CLLocationCoordinate2DMake函数失败,然后导致reverseGeocodeLocation函数中的致命错误。 我把这个格式弄糟了吗?

你永远不会反向地理编码的位置,但你传递给manager.location。

请参阅: CLGeocoder().reverseGeocodeLocation(manager.location, ...

我认为这是一个复制和粘贴错误,这是问题 – 代码本身看起来不错 – 几乎;)

工作代码

  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") } })