• Swift


    通过CoreLocation类,得到的定位信息都是以经度和纬度等表示的地理信息,通过CLGeocoder类可以将其反编码成一个地址。反之,也可根据一个地址获取经纬度。


    1,通过经纬度获取地址
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    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,通过地址获取经纬度

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    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()
        }
    }
  • 相关阅读:
    2016.7.22.noip2012D2
    2016.7.21.noip2014D2
    LIS最长上升子序列O(n^2)与O(nlogn)的算法
    vijos1910解方程
    vijos1909寻找道路
    viojs1908无线网路发射器选址
    P1907飞扬的小鸟
    P1906联合权值
    P1905生活大爆炸版 石头剪刀布
    poj1274(匈牙利算法)
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4843578.html
Copyright © 2020-2023  润新知