我实际上正在迅速构建一个应用程序。 问题是应用程序应该从经度中获取子位置,并检查该子位置是否是数组的一部分,但是我无法获得子位置
这里的任何专业人士可以帮助我吗
这是所用的经度
let loc: CLLocation = CLLocation(latitude:43.60089111328125, longitude: 3.875329601741884)
ceo.reverseGeocodeLocation(loc, completionHandler: {(placemarks, error) in
if (error != nil)
{
print("reverse geodcode fail: \(error!.localizedDescription)")
}
let pm = placemarks! as [CLPlacemark]
if pm.count > 0 {
let pm = placemarks![0]
addressString = ""
if pm.name != nil {
addressString += pm.name! + ", "
}
if pm.isoCountryCode != nil {
addressString += pm.isoCountryCode! + ", "
}
if pm.country != nil {
addressString += pm.country! + ", "
}
if pm.postalCode != nil {
addressString += pm.postalCode! + ", "
}
if pm.administrativeArea != nil {
addressString += pm.administrativeArea! + ", "
}
if pm.subAdministrativeArea != nil {
addressString += pm.subAdministrativeArea! + ", "
}
if pm.locality != nil {
addressString += pm.locality! + ", "
}
if pm.subLocality != nil {
addressString += pm.subLocality! + ", "
}
if pm.thoroughfare != nil {
addressString += pm.thoroughfare! + ", "
}
if pm.subThoroughfare != nil {
addressString += pm.subThoroughfare! + ", "
}
if pm.areasOfInterest != nil {
print(pm.areasOfInterest!)
}
print(pm.addressDictionary)
}
})
应该将GAMBETTA作为subLocality返回,但是什么也没发生。
答案 0 :(得分:0)
您可以根据位置坐标使用Geocoder
进行反向地理编码,这将返回CLPlacemark
,然后可以检查subLocality
是否存在,如下所示:
let geoCoder = CLGeocoder()
geoCoder.reverseGeocodeLocation(loc, completionHandler: { placemarks, error in
// Place details
guard let placeMark = placemarks?.first else { return }
// SubLocality
if let subLocality = placeMark.subLocality {
// Do something if exists
}
})
答案 1 :(得分:0)
可以请您尝试,它将为您提供帮助。
let newlocation: CLLocation = CLLocation(latitude:43.60089111328125, longitude: 3.875329601741884)
let geoCoder = CLGeocoder()
geoCoder.reverseGeocodeLocation(newlocation, completionHandler: { (placemarks, error) -> Void in
// Place details
var placeMark: CLPlacemark!
placeMark = placemarks?[0]
print(placeMark.subLocality as Any)
// Address dictionary
print(placeMark.addressDictionary as Any)
//City
if let city = placeMark.addressDictionary!["City"] as? String {
print("city : \(city)")
}
})