geocodeAddressString不适用于某些地址

时间:2014-09-30 06:22:42

标签: ios iphone swift geocoding

我试图将地址转换为受尊重的纬度和经度值,即地理编码。

来自Google定义:

  

什么是地理编码?

     

地理编码是将地址(例如" 1600 Amphitheatre Parkway,Mountain View,CA")转换为地理坐标(如纬度37.423021和经度-122.083739)的过程,您可以使用它来放置标记或位置地图。

我在使用Swift的iOS中尝试相同。

我的代码工作正常。但是有些地址没有转换成lat,lng值。我确信我搜索的地址是100%有效。

这是我的代码

override func viewDidLoad() {
    super.viewDidLoad()


    var address = "Kloten Airport, Switzerland" // This Address not working
    var geocoder = CLGeocoder()
    geocoder.geocodeAddressString(address, {(placemarks: [AnyObject]!, error: NSError!) -> Void in
        if let placemark = placemarks?[0] as? CLPlacemark {


            let title = ABCreateStringWithAddressDictionary(placemark.addressDictionary, false)


            println(title);

            let location = CLLocationCoordinate2D(
                latitude: placemark.location.coordinate.latitude,
                longitude: placemark.location.coordinate.longitude
            )

        }

    })

}

我尝试了不同的地址来进行地理编码,例如Houston USA(这很好用)," Rautistrasse 12" (这也运作良好),但是当我搜索地址Kloten Airport, Switzerland时,这对我不起作用。

iOS geocodeAddressString中是否有任何错误,或者我做错了什么?

1 个答案:

答案 0 :(得分:4)

我认为您希望iOS地理编码的效果与Google的地理编码一样好。但肯定不会。

它没有用,因为Apple的地理编码不如Google的地理编码好。

要明白我的意思,请填写

  

瑞典克洛滕机场

进入iOS地图应用。它什么都没有。把它放到maps.google.com,然后你会看到机场。