swift ios 系統(tǒng)定位和反地理編碼

最近項目要用到定位的功能,研究了一番百度地圖屡拨,需要接入很多第三方庫,還需要生成密鑰等等褥实,個人覺得比較麻煩呀狼,雖然百度地圖的功能已經(jīng)相當完善了,最后決定用系統(tǒng)地圖定位损离,系統(tǒng)自帶用的是高德地圖哥艇,AIP很清晰,下面是代碼實現(xiàn)僻澎。
首先import CoreLocation, 創(chuàng)建 OTTLocationManager類貌踏,繼承NSObject

// 創(chuàng)建CLLocationManager 對象
let manager = CLLocationManager()
// 保存當前定位:
var currentLocation: CLLocation?
// 檢測是否獲取到定位
// 反地理編碼,保存城市窟勃,地區(qū)
var subLocality: String?
var locality: String?

創(chuàng)建單例祖乳,方便ViewController使用:

//singleton manager
class var defaultManager: OTTLocationManager {
struct Static {
static let locManager = OTTLocationManager()
}
return Static.locManager
}
開啟定位服務的初始設定:

func getLatLon() {
   
    if (CLLocationManager.locationServicesEnabled()) {
        
        //使用應用程序期間允許訪問位置數(shù)據(jù)
        self.manager.requestWhenInUseAuthorization()
        self.manager.delegate = self
        self.manager.desiredAccuracy = kCLLocationAccuracyBest
        self.manager.distanceFilter = kCLLocationAccuracyHundredMeters
        self.manager.startUpdatingLocation()
    } else {
        CLLocationManager.authorizationStatus()
        print("[OTTLocationManager getLatLon] 定位服務未開啟")
    }

}

實現(xiàn)代理方法,獲取定位經(jīng)緯度及反地理編碼:
extension OTTLocationManager: CLLocationManagerDelegate {

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    
    self.isLocation = true
    //取得locations數(shù)組的最后一個:因定位一直在移動秉氧,所以取數(shù)組最后一個準確經(jīng)緯度
    let location: CLLocation = locations[locations.count - 1]
    if location.horizontalAccuracy > 0 {
        let lat = Float(location.coordinate.latitude)
        let lon = Float(location.coordinate.longitude)
        
        self.currentLocation = location
        print("[OTTLocationManager locationManager:didUpdateLocations] lat = \(lat),  lon = \(lon)")
        
        //反地理編碼:將經(jīng)緯度轉換成城市眷昆,地區(qū),街道
        CLGeocoder().reverseGeocodeLocation(location) { (placemakes: [CLPlacemark]?, error: NSError?) -> Void in
            guard let placemark = placemakes?.first else {
                return
            }
            
           // 城市
            self.locality = placemark.locality
           // 地區(qū)
            self.subLocality = placemark.subLocality
            print("[OTTLocationManager locationManager:didUpdateLocations] locality = \(placemark.locality), sublocality = \(placemark.subLocality), subthoroughfare = \(placemark.subThoroughfare), self.subLocality = \(self.subLocality)")  //詳細街道
        }
    }
    // 停止定位服務
    self.manager.stopUpdatingLocation()
}

//MARK:定位錯誤信息
func locationManager(manager: CLLocationManager, didFinishDeferredUpdatesWithError error: NSError?) {
    
    print("[OTTLocationManager locationManager:didFinishDeferredUpdatesWithError] \(error)\(error?.description)")
}

//檢測是否獲取到定位
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
    //如果未開啟定位服務或者獲取不到定位汁咏,會走此代理方法
    self.manager.stopUpdatingLocation()
    self.isLocation = false
    print("[OTTLocationManager locationManager:didFailWithError] 無法獲取到定位")
}

}

啊哈亚斋,這樣就實現(xiàn)了簡單的定位功能.
模擬器運行,要在Debug->Location->CustomLocation 設置經(jīng)緯度攘滩,模擬移動端定位帅刊,否則不會執(zhí)行代理方法。
如果要實現(xiàn)地圖定位功能漂问,需要import MapKit,實現(xiàn) MKMapViewDelegate代理方法赖瞒,后續(xù)介紹女揭,敬請期待。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末冒黑,一起剝皮案震驚了整個濱河市田绑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抡爹,老刑警劉巖掩驱,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異冬竟,居然都是意外死亡欧穴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門泵殴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涮帘,“玉大人,你說我怎么就攤上這事笑诅〉饔В” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵吆你,是天一觀的道長弦叶。 經(jīng)常有香客問我,道長妇多,這世上最難降的妖魔是什么伤哺? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮者祖,結果婚禮上立莉,老公的妹妹穿的比我還像新娘。我一直安慰自己七问,他們只是感情好蜓耻,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著械巡,像睡著了一般刹淌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坟比,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機與錄音嚷往,去河邊找鬼葛账。 笑死,一個胖子當著我的面吹牛皮仁,可吹牛的內容都是我干的籍琳。 我是一名探鬼主播菲宴,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼趋急!你這毒婦竟也來了喝峦?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤呜达,失蹤者是張志新(化名)和其女友劉穎谣蠢,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體查近,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡眉踱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了霜威。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谈喳。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖戈泼,靈堂內的尸體忽然破棺而出婿禽,到底是詐尸還是另有隱情,我是刑警寧澤大猛,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布扭倾,位于F島的核電站,受9級特大地震影響胎署,放射性物質發(fā)生泄漏吆录。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一琼牧、第九天 我趴在偏房一處隱蔽的房頂上張望恢筝。 院中可真熱鬧,春花似錦巨坊、人聲如沸撬槽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侄柔。三九已至,卻和暖如春占调,著一層夾襖步出監(jiān)牢的瞬間暂题,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工究珊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留薪者,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓剿涮,卻偏偏與公主長得像言津,于是被迫代替她去往敵國和親攻人。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內容