起因
月底接到通知,晚餐補助由簽到改成釘釘打卡。
作為一名技術人員,不甘于寂寞的研究了一發(fā)釘釘遠程打卡..
源于我的正(dan)直(xiao),我并未在實際工作中使用,僅作為研究實現(xiàn)了一發(fā)

工具
- 一臺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.jpeg
-
116.397477,39.908692為高德獲取到天安門的坐標,使用飄逸算法進行坐標轉(zhuǎn)換 -
步驟2中的飄逸算法,在我給出的demo中已給出iOS版本的轉(zhuǎn)換方式
如下圖所示
素材2.jpeg

- 修改start.gpx中的對應經(jīng)緯度
<wpt lat="39.908692" lon="116.397477">

-
連接真機,運行項目,Xcode - 工具欄 - Debug - Simulate Location,點擊start,如下圖所示
素材5.png -
打開釘釘,遠程打卡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一下哦



