使用CoreLocation來跟蹤使用者距離

2021-07-14 20:50:12 字數 912 閱讀 2913

corelocation是乙個強大的framework,他能幫助開發使其免於複雜的位置處理而專注於應用邏輯的開發。然而corelocation並沒有提供的對使用者移動距離的檢測,當我們開發跑步類運動類應用時,就不可避免的需要這項功能。湊巧有乙個朋友讓我幫忙做乙個gps模組,故而就有了cylocationmanager。

**在github開源託管,傳送門

readme有詳細的使用說明,我在這裡主要描述一下實現的一些要點。

基本的思路既是不斷的取樣使用者資料,過濾掉誤差較大的資料,取相對誤差較小的資料進行記錄,然後計算相鄰記錄點之間的距離。

簡單描述一下幾個要點:

當使用者開始運動,程式開始追蹤,設定乙個強制標記,(needforcecalculation),表示程式應該忽略其他因素,立刻獲取乙個點座標。用做起始值。

設定了cllocationmanager.headingfilter,使得程式能在使用者轉向的時候收到通知,此時設定乙個強制標記(needforcecalculation),使得程式在使用者轉向的時候,記錄下轉向時所在的位置,以減少誤差。

設定cllocationmanager.distancefilter,使得程式在變化的位置大於一定數值時該更新位置才算為有效,可以避免使用者在乙個地方停留,由於誤差記錄距離依然增長。

當程式獲得位置更新時,若精度合格,切時間戳合理,則加入乙個陣列,用於之後的計算。若精度大於某個閥值,則認為該位置對跟蹤距離無幫助,此時將該位置捨去。

陣列currentkeeplocations來記錄最近更新的k個位置,並每隔t秒,從該陣列中,取出精度最高的位置記錄。(精度見cllocation.horizontalaccuracy)

注意,當使用者停止運動時,位置將無法得到更新,此時需要設定乙個timer,令其在一定時間內強制獲得乙個位置。

該程式還可以通過每次更新位置時獲得的位置的精確度來判斷gps訊號的強弱。

CoreLocation基本使用

匯入框架,匯入標頭檔案,引入全域性cllocationmanager物件 因為整個工程都要用到它,不能讓他死 設定 self.manager.delegate self 設定多久獲取一次 self.manager.distancefilter 500 設定獲取位置的精確度 self.manager....

ios 使用Core Location定位

core location可以利用三種技術來實現 gps 蜂窩基站三角網定位 cell tower triangulation 和wi fi定位服務 wps 其中gps是最精確的。我們只用告訴core location我們想要的精度級別,它將從它可用的技術中決定哪種可以更好地滿足你的需求。為了與co...

CoreLocation框架的使用

1.應用場景 2.ios中加入定位和地圖功能所依賴的框架 mapkit 3.兩個熱門專業術語 4.使用corelocation框架進行定位1.為什麼了解 2.ios8.0之前的前台定位 建立cllocationmanager物件並設定 呼叫方法,開始更新使用者位置資訊 在對應的 方法中獲取位置資訊 ...