为什么CLGeoCoder什么都得不到?



我编程了一个类,可以将位置反转为地理信息,如下所示:

import Foundation
import UIKit
import CoreLocation
public class Geocoder{
public static func Geocoder(latitudein:Double,longitudein:Double)->String
{
var address:String?="";
var geocoder = CLGeocoder.init();
var location:CLLocation=CLLocation.init(latitude: latitudein, longitude: longitudein);
// var placemarks:[CLPlacemark]=[CLPlacemark].init();
geocoder.reverseGeocodeLocation(location) { (placemarks, error) in
for p in placemarks!
{
if(p != nil)
{
//print(p);
// address?.append(p.country!);
// address?.append(p.subAdministrativeArea!);
address=p.name;
}
}
}
print(address);
return address!;
}
}

但是地址nil,我试过p.country等很多参数,但还是返回nil,我想问为什么以及如何解决?

你可以试试

public static func Geocoder(latitudein:Double,longitudein:Double,completion:@escaping(_ address:String?) -> Void )
{
var geocoder = CLGeocoder.init();
var location:CLLocation=CLLocation.init(latitude: latitudein, longitude: longitudein);
geocoder.reverseGeocodeLocation(location) { (placemarks, error) in

if error != nil {
completion(nil)
return
} 
for p in placemarks!
{
if(p != nil)
{
completion(p.name)
break
}
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
VCName.Geocoder(latitudein: 20.555, longitudein: 30.777) { (address) in
if let ad = address {

}
}
}

最新更新