新手一枚,在此請教各位前輩一個問題。
最近在做企業號的考勤簽到簽退功能,現在伺服器後台已經可以接收到使用者發送過來的地理位置(經緯度),我的需求是使用者只允許在常駐辦公室地區(假設辦公室很大,幾百個平方,在這地區內都可簽到簽退,地區外則不允許)的地理位置進行簽到簽退。
擷取到使用者返回的經緯度後用什麼辦法判斷其是否允許簽到簽退??
如果採用在資料庫儲存員工的辦公地點地理位置資訊然後與其返回的經緯度進行比較的方法判斷,可這辦公地點很大,地理位置資訊如何儲存?判斷又如何判斷?
回複討論(解決方案)
首先!目前的地圖定位誤差也不算太准,好在是在公司,不管是wifi,gps定位還算準確,一般誤差在100米之內,姑且最好達到50米。
1:
資料庫中儲存公司人員半年辦公地點所處中心位置經緯度。且以改點為圓心,儲存改點到所允許最大辦公距離之間的距離,也就是半徑了。每次使用者簽到或則簽退,假如A,B兩點,A點經度,緯度分別為λA和ΦA,B點的經度、緯度分別為λB和ΦB,d為距離。
利用如下方法:
d=111.12cos{1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB-λA)]}
計算之間距離與資料庫中對應使用者所允許的距離(半徑)比較。在半徑發範圍內,則允許簽到簽退。
2:和1類似。問題轉化為,已知一個點座標,求以該點位圓心,半徑為r,圓上的所有點的座標。
2.1:
選取工作人員經常辦公地點中心存入資料庫,計算改點距離最大允許範圍的所有經緯度,存入資料庫(不建議,也不科學,資料量大了吃不消。)。
2.2:
。求得是矩形的四個點存入資料庫。使用者在簽到簽退的時候比較資料庫中的值。
希望這篇文章幫得到你 http://digdeeply.org/archives/06152067.html
建議2.2方法。
誤差肯定是有的。
給點分吧
範圍小就定個中心點,判斷半徑唄.
不過有時候不準,不好解決啊
想問的是除了經緯度能搞到網路狀態麼?
或者提交時候的ip是公司外網/內網ip就可以簽到之類
首先!目前的地圖定位誤差也不算太准,好在是在公司,不管是wifi,gps定位還算準確,一般誤差在100米之內,姑且最好達到50米。
1:
資料庫中儲存公司人員半年辦公地點所處中心位置經緯度。且以改點為圓心,儲存改點到所允許最大辦公距離之間的距離,也就是半徑了。每次使用者簽到或則簽退,假如A,B兩點,A點經度,緯度分別為λA和ΦA,B點的經度、緯度分別為λB和ΦB,d為距離。
利用如下方法:
d=111.12cos{1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB-λA)]}
計算之間距離與資料庫中對應使用者所允許的距離(半徑)比較。在半徑發範圍內,則允許簽到簽退。
2:和1類似。問題轉化為,已知一個點座標,求以該點位圓心,半徑為r,圓上的所有點的座標。
2.1:
選取工作人員經常辦公地點中心存入資料庫,計算改點距離最大允許範圍的所有經緯度,存入資料庫(不建議,也不科學,資料量大了吃不消。)。
2.2:
。求得是矩形的四個點存入資料庫。使用者在簽到簽退的時候比較資料庫中的值。
希望這篇文章幫得到你 http://digdeeply.org/archives/06152067.html
建議2.2方法。
誤差肯定是有的。
給點分吧
新手一枚,在此請教各位前輩一個問題。
最近在做企業號的考勤簽到簽退功能,現在伺服器後台已經可以接收到使用者發送過來的地理位置(經緯度),我的需求是使用者只允許在常駐辦公室地區(假設辦公室很大,幾百個平方,在這地區內都可簽到簽退,地區外則不允許)的地理位置進行簽到簽退。
擷取到使用者返回的經緯度後用什麼辦法判斷其是否允許簽到簽退??
如果採用在資料庫儲存員工的辦公地點地理位置資訊然後與其返回的經緯度進行比較的方法判斷,可這辦公地點很大,地理位置資訊如何儲存?判斷又如何判斷?
回答得很詳細,謝謝你。