使用CLGeocoder解析经纬度获取真实地理位置信息

首先,我们可以通过CLLocationManager类获取用户的经纬度信息,查看之前的一篇:使用CLLOCATIONMANAGER定位获取经纬度。

现在我们需要根据经纬度来获取真实的地理位置了,我们需要使用CLGeocoder类。

它接收经纬度信息,然后使用异步方式在后台连接苹果的地理编码信息数据库,拿到地理位置信息后,在返回到我们的主线程中供我们使用。

需要注意的是,这个过程是需要网络连接的。

看下代码如何实现:

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
    if locations.count > 0{
    
        //  使用last 获取 最后一个最新的位置, 前面是上一次的位置信息
        var locationInfo:CLLocation = locations.last as! CLLocation
        
        //位置信息反编码
        var ge:CLGeocoder = CLGeocoder()
        ge.reverseGeocodeLocation(locationInfo, completionHandler: { (res:[AnyObject]!, err:NSError!) -> Void in
            if res.count > 0 {
                var str:String = ""
                for i in 0..<res.count{
                    str += (res[i].name)
                }
                //直接获取最后一个元素
                //var pl:CLPlacemark = res.last as! CLPlacemark
                //str = pl.name
                SCMessageBox.showquick(self, contentMsg: "\(str)")
            }
        })
        //SCMessageBox.showquick(self, contentMsg: "经度:\(locationInfo.coordinate.longitude),纬度:\(locationInfo.coordinate.latitude)")
    }
}

我的运行结果如下图:

使用CLGeocoder解析经纬度获取真实地理位置信息

是不是惊讶,我为什么没有马赛克。。。因为这位置根本就不精确,不是本人真实所在的位置,哈哈!

因为GPS位置信息是需要纠偏的,不然会存在一点误差,具体的可以百度下,可以参考:

GPS火星坐标转换

http://code4app.com/requirement/52cfdc08cb7e84291b8b6863

tips:

本文由wp2osc导入,原文链接:http://devonios.com/use-clgeocoder-get-really-address.html

由于OSChina的OpenAPI在处理content参数时会自动过滤img标签,所以无法显示图片,详见

你可能感兴趣的:(定位,gps,CLGeocoder)