Swift - 经纬度位置坐标与真实地理位置相互转化
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_785.html
通过CoreLocation类,得到的定位信息都是以经度和纬度等表示的地理信息,通过CLGeocoder类可以将其反编码成一个地址。反之,也可根据一个地址获取经纬度。
1,通过经纬度获取地址

import UIKit
import CoreLocation
import MapKit
class ViewController: UIViewController ,CLLocationManagerDelegate {
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
reverseGeocode()
}
//地理信息反编码
func reverseGeocode(){
var geocoder = CLGeocoder()
var p:CLPlacemark?
var currentLocation = CLLocation(latitude: 32.029171, longitude: 118.788231)
geocoder.reverseGeocodeLocation(currentLocation, completionHandler: {
(placemarks:[AnyObject]!, error:NSError!) -> Void in
//强制转成简体中文
var array = NSArray(object: "zh-hans")
NSUserDefaults.standardUserDefaults().setObject(array, forKey: "AppleLanguages")
//显示所有信息
if error != nil {
//println("错误:\(error.localizedDescription))")
self.textView.text = "错误:\(error.localizedDescription))"
return
}
let pm = placemarks as! [CLPlacemark]
if pm.count > 0{
p = placemarks[0] as? CLPlacemark
//println(p) //输出反编码信息
self.textView.text = p?.name
} else {
println("No placemarks!")
}
})
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
2,通过地址获取经纬度

import UIKit
import CoreLocation
import MapKit
class ViewController: UIViewController ,CLLocationManagerDelegate {
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
locationEncode()
}
//地理信息编码
func locationEncode(){
var geocoder = CLGeocoder()
var p:CLPlacemark!
geocoder.geocodeAddressString("南京市新街口大洋百货", completionHandler: {
(placemarks:[AnyObject]!, error:NSError!) -> Void in
if error != nil {
self.textView.text = "错误:\(error.localizedDescription))"
return
}
let pm = placemarks as! [CLPlacemark]
if pm.count > 0{
p = placemarks[0] as! CLPlacemark
self.textView.text = "经度:\(p.location.coordinate.longitude) "
+ "纬度:\(p.location.coordinate.latitude)"
} else {
println("No placemarks!")
}
})
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}

浙公网安备 33010602011771号