php地理位置打卡,定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
具體代碼如下所述:
/* 計(jì)算兩組經(jīng)緯度坐標(biāo)之間的距離
* @param $lat1 緯度1
* @param $lng1 經(jīng)度1
* @param $lat2 緯度2
* @param $lng2 經(jīng)度2
* @param int $len_type 返回值類(lèi)型(1-m 2-km)
* @param int $decimal 保留小數(shù)位數(shù)
* @return float
*/
public function getdistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2)
{
$radlat1 = $lat1 * 3.1415926 / 180.0;
$radlat2 = $lat2 * 3.1415926 / 180.0;
$a = $radlat1 - $radlat2;
$b = ($lng1 * 3.1415926 / 180.0) - ($lng2 * 3.1415926 / 180.0);
$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radlat1) * cos($radlat2) * pow(sin($b / 2), 2)));
$s = $s * 6378.137;
$s = round($s * 1000);
if ($len_type > 1) {
$s /= 1000;
}
return round($s, $decimal);
}
ps:下面看下根據(jù)經(jīng)緯度判斷簽到范圍是否在指定范圍內(nèi)
/**
* 將角度換算為弧度
* @param d 角度
* @return 弧度
*/
private static double rad(double d) {
return d * math.pi / 180.0;
}
/**
* 先通過(guò)經(jīng)緯度獲取距離(單位:米),再判斷一個(gè)點(diǎn)是否在圓形區(qū)域內(nèi)(根據(jù)所給的半徑坐比較)
* @param n1=>app
* @param n2=>倉(cāng)庫(kù)
* @param radius
* @return
*/
public static boolean isincircle(zjpoint n1 ,zjpoint n2,string radius){
final double earth_radius = 6378.137;地球半徑 (千米)
double radlat1 = rad(n1.getx()!=null ? n1.getx().doublevalue():0);
double radlat2 = rad(n2.getx()!=null ? n2.getx().doublevalue():0);
double radlon1 = rad(n1.gety()!=null ? n1.gety().doublevalue():0);
double radlon2 = rad(n2.gety()!=null ? n2.gety().doublevalue():0);
//兩點(diǎn)之間的差值
double jddistance = radlat1 - radlat2;
double wddistance = radlon1 - radlon2;
double distance = 2 * math.asin(math.sqrt(math.pow(math.sin(jddistance / 2), 2) +
math.cos(radlat1) * math.cos(radlat2) * math.pow(math.sin(wddistance / 2), 2)));
distance = distance * earth_radius;
distance = math.round(distance * 10000d) / 10000d;
distance = distance*1000;//將計(jì)算出來(lái)的距離千米轉(zhuǎn)為米
double r = double.parsedouble(radius);
//判斷一個(gè)點(diǎn)是否在圓形區(qū)域內(nèi)
if (distance > r) {
return false;
}
return true;
}
總結(jié)
以上所述是小編給大家介紹的定位地理位置php判斷員工打卡簽到經(jīng)緯度是否在打卡之內(nèi),希望對(duì)大家有所幫助
希望與廣大網(wǎng)友互動(dòng)??
點(diǎn)此進(jìn)行留言吧!
總結(jié)
以上是生活随笔為你收集整理的php地理位置打卡,定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaEE笔记——快递管理系统架构
- 下一篇: php学习日志(5)-解决Windows