根据经纬度计算距离
- /**
- * 根据两点间经纬度坐标,计算两点间距离,单位:千米
- * @param lng1
- * @param lat1
- * @param lng2
- * @param lat2
- */
- function getdistance($lng1,$lat1,$lng2,$lat2){
//将角度转为狐度
$radLat1=deg2rad($lat1);//deg2rad()函数将角度转换为弧度
$radLat2=deg2rad($lat2);
$radLng1=deg2rad($lng1);
$radLng2=deg2rad($lng2);
$a=$radLat1-$radLat2;
$b=$radLng1-$radLng2;
$s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)))*6378.137*1000;
return $s;
}
sql 查询
- SELECT
- es_name,
- es_lon,
- es_lat,
- ROUND(
- 6378.138 * 2 * ASIN(
- SQRT(
- POW(
- SIN(
- (
- 30.611842 * PI() / 180 - es_lat * PI() / 180
- ) / 2
- ),
- 2
- ) + COS(30.611842 * PI() / 180) * COS(es_lat * PI() / 180) * POW(
- SIN(
- (
- 104.074666 * PI() / 180 - es_lon * PI() / 180
- ) / 2
- ),
- 2
- )
- )
- ) * 1000
- ) AS distance_um
- FROM
- c_ershuai
- ORDER BY
- distance_um ASC