iOS端實現(xiàn)釘釘及其他LBS應用遠程打卡

起因

月底接到通知,晚餐補助由簽到改成釘釘打卡。

作為一名技術人員,不甘于寂寞的研究了一發(fā)釘釘遠程打卡..

源于我的正(dan)直(xiao),我并未在實際工作中使用,僅作為研究實現(xiàn)了一發(fā)

素材0.gif

工具

  • 一臺mac (虛擬器)
  • Xcode
  • 一臺iPhone

關于坐標

這里普及一下坐標系統(tǒng): 目前我們經(jīng)常接觸的無非就是原始坐標,火星坐標二次加密坐標。

  • 原始坐標:手機上獲取到的是原始的GPS坐標 —— WGS-84。
  • 火星坐標:我大天朝自己加了飄逸搞的一套加密坐標,中國國測局(和GFW一樣的傻屌組織)—— GCJ-02谷歌、高德。
  • 百度加密坐標:在火星坐標的基礎上再次飄逸后的加密坐標 —— BD-09百度。

在遙遠的東方,有一個天朝。 天朝有一個測繪局,發(fā)明了一種把美國衛(wèi)星的GPS的地球坐標,進行偏移的算法,計算后,得出了一個火星坐標。 為了讓火星坐標能正確的顯示,又給每部導航軟件加入了這個算法,可以在大家的地圖上還原位置。并且給每部導航收費。美其名國家安全。而且這個算法看上去很牛B的樣子,還不可逆。 所以,只有這個國家的人都在用錯誤的坐標。正宗的掩耳盜鈴。 民用衛(wèi)星精度都已經(jīng)讓你出身冷汗了,何況軍用衛(wèi)星。打仗估值也不會用中國的電子地圖吧。 只可惜各種LBS應用,都是個麻煩事哦。

還好黃天不負有心人,終于經(jīng)過大家的模擬,計算,基本還原了飄逸算法。

原理

做過地圖定位相關App的童鞋都應該了解Xcode - 工具欄 - Debug - Simulate Location

它的作用是用于虛擬定位,以便于不用親臨其地模擬到達某個坐標。

同時釘釘打卡定位打卡的原理,是基于你是否到達了以公司地理坐標為圓心的某個圓。在此范圍內(nèi),員工可進行打卡。

我們需要做的是使用百度、高德或者谷歌地圖獲取到打卡位置的GPS坐標,然后使用算法轉(zhuǎn)換成iPhone所需要的坐標WGS-84。

然后在Simulate Location使用這個打卡坐標模擬打卡。

實現(xiàn)步驟 (使用高德定位為例)

  1. 使用高德獲取公司(以天安門所在點為例)所在點的地理坐標
    素材1.jpeg
  1. 116.397477,39.908692為高德獲取到天安門的坐標,使用飄逸算法進行坐標轉(zhuǎn)換
  2. 步驟2中的飄逸算法,在我給出的demo中已給出iOS版本的轉(zhuǎn)換方式
    如下圖所示
    素材2.jpeg
素材3.jpeg
  1. 修改start.gpx中的對應經(jīng)緯度
    <wpt lat="39.908692" lon="116.397477">
素材4.jpeg
  1. 連接真機,運行項目,Xcode - 工具欄 - Debug - Simulate Location,點擊start,如下圖所示

    素材5.png

  2. 打開釘釘,遠程打卡you get ~


    素材6.jpeg

整個遠程打卡的流程到此就結(jié)束了,當開啟模擬定位之后,你會發(fā)現(xiàn)所有APP的定位均換成了這個定位,不用擔心,當結(jié)束項目之后稍等一下就會回到準確的定位。

補充說明以下幾點
1.如果沒有結(jié)束工程就拔掉數(shù)據(jù)線,定位會一直是模擬定位,可能需要重啟手機恢復一下
2.WiFi打卡需要修改一下所用WiFi的WiFi名和公司W(wǎng)iFi名一致
3.關于坐標段落的文獻引用于其他作者

demo地址

有不明白的在評論中回復即可,對你有幫助的話麻煩star一下哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容