首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将地理坐标转换成准确的地址?

如何将地理坐标转换成准确的地址?
EN

Stack Overflow用户
提问于 2016-08-30 13:42:26
回答 3查看 283关注 0票数 1

我想将用户的位置,其中包含纬度和经度的值,转换成准确的地址。但是它不起作用,它在执行后返回一个空字符串。

此外,Xcode建议我使用CNPostalAddress,我不知道它是什么。

这是函数

代码语言:javascript
复制
import Foundation
import CoreLocation
import AddressBook`

    func reverseGeocoder()->String{
        let info:String?
        var geocoder = CLGeocoder()
        var currentUserLocation = CLLocation(latitude: 30, longitude: 122)
        geocoder.reverseGeocodeLocation(currentUserLocation, completionHandler: {
            (placemarks,error) -> Void in
            if placemarks != nil && placemarks?.count > 0{
                let placemark = placemarks![0] as CLPlacemark
                let addressDictionary = placemark.addressDictionary! as NSDictionary

                let str:NSMutableString = ""
                if let address = addressDictionary.objectForKey(kABPersonAddressStreetKey) as? String{
                    str.appendString(address)
                }

                if let state = addressDictionary.objectForKey(kABPersonAddressStateKey) as? String{
                    str.appendString(state)
                }

                if let city = addressDictionary.objectForKey(kABPersonAddressCityKey) as? String{
                    str.appendString(city)
                }

                info = str as String
            }
        }
        )
        return info
}

以下是警告

如果你能帮我修好它,我会很感激的:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-30 13:48:28

import AddressBook替换为import Contacts,同时也替换

addressDictionary.objectForKey(kABPersonAddressStreetKey)addressDictionary.objectForKey(CNPostalAddress.Street)

addressDictionary.objectForKey(kABPersonAddressStateKey)addressDictionary.objectForKey(CNPostalAddress.State)

addressDictionary.objectForKey(kABPersonAddressCityKey)addressDictionary.objectForKey(CNPostalAddress.City)

您可以在苹果甜甜圈中获得更多信息

使用完成

代码语言:javascript
复制
func reverseGeocoder (completion: (info:String) -> Void){

    var geocoder = CLGeocoder()
    var currentUserLocation = CLLocation(latitude: 30, longitude: 122)
    geocoder.reverseGeocodeLocation(currentUserLocation, completionHandler: {
        (placemarks,error) -> Void in
        if placemarks != nil && placemarks?.count > 0{
            let placemark = placemarks![0] as CLPlacemark
            let addressDictionary = placemark.addressDictionary! as NSDictionary

            let str:NSMutableString = ""
            if let address = addressDictionary.objectForKey(kABPersonAddressStreetKey) as? String{
                str.appendString(address)
            }

            if let state = addressDictionary.objectForKey(kABPersonAddressStateKey) as? String{
                str.appendString(state)
            }

            if let city = addressDictionary.objectForKey(kABPersonAddressCityKey) as? String{
                str.appendString(city)
            }
            completion(info: str as String)

        }
    }
    )
票数 1
EN

Stack Overflow用户

发布于 2016-08-30 13:48:52

因此,它似乎是iOS 9中的一个新类,您必须导入内容。

代码语言:javascript
复制
import Contacts

CNPostalAddress封装城市、街道、州等信息。这是更多的细节。班级/

票数 0
EN

Stack Overflow用户

发布于 2016-08-30 13:49:07

代码语言:javascript
复制
if let coordinates = base.coOrdinates
        {
          if let lat = coordinates.lat {
            let location = CLLocation(latitude: lat, longitude: coordinates.lon!)
            let reverseGeocoder = CLGeocoder()
            reverseGeocoder.reverseGeocodeLocation(location, completionHandler: {place,_ in
              //print(place)
              let myPlacemark = place![0]
              let countryName = myPlacemark.country
              let cityName = myPlacemark.subAdministrativeArea
              let streetName = myPlacemark.subLocality
              NSOperationQueue.mainQueue().addOperationWithBlock {
                self.lastLocationLabel.text = "\(streetName!), \(cityName!), \(countryName!)"
              }
            })
          } else {
            self.lastLocationLabel.text = "Not available"
          }
        }

也许能帮到你。我就是这样从坐标中得到位置字符串的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39229190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档