Swift-定位,編碼/反編碼功能的封裝

weixin_33912445發表於2018-07-30

GitHub地址 demo中有詳細的使用

一. 定位的使用

  1. 懶載入宣告物件
    // 使用的時候一定要宣告成為持久變數,否則會提前銷燬,不執行MCPositioning類裡面的定位的代理方法
    lazy var positioning: MCPositioning = {
        let p = MCPositioning()
        return p
    }()
  1. 開啟定位
   // 一定不要寫在懶載入中,不然只能定位一次
   positioning.startPositioning(self)
  1. 獲取定位的經緯度
  positioning.clousre = { (latitude,longitude) in
  let oneStr = "定位的緯度: \(latitude)  ----經度: \(longitude)"
        }
  1. 在設定頁面重新開啟了定位定位/重新進入前臺 如何重新定位
// 監聽重新變成活躍狀態的通知
  NotificationCenter.default.addObserver(self, selector: #selector(didBecomeActive), name: notificationName, object: nil)


  @objc func didBecomeActive() {
        // 重新開啟定位
        // 重新執行2和3步驟
  }

  1. 說明
  • 封裝的MCPositioning類裡面自動處理了沒開啟或者定位不可用的情況。

二. 編碼 / 反編碼

  1. 懶載入宣告物件
    // 使用的時候一定要宣告成為持久變數,否則會提前銷燬,不執行couslre
    lazy var geccoder: MCGeocoder = {
        let g = MCGeocoder()
        return g
    }()
  1. 編碼
   weakSelf!.geccoder.MCeverseGeocode(latitude: latitude, longitude: longitude, success: { (addressInfo) in
               
        let twoStr = "反編碼出來的地址:" + addressInfo.addressLines
   }, failure: { (error) in  })
  1. 反編碼
  weakSelf!.geccoder.MCLocationEncode(address: addressInfo.addressLines, success: { (coor) in
       let threeStr = "根據地址編碼出來的經緯度: \(coor.latitude)----\(coor.longitude)"
  },failure: {(error) in  })

相關文章