mysql坐标计算距离匹配


    /**
* 配送距离检测
* param:
* pmsid:仓储点id,lat:收货地址纬度,lng:收货地址经度
* logic:
* 根据收货地址的经纬度检测是否在配送范围内,在返回true不在返回false
* 注意:数据库返回距离的单位是米
*/
public function checkDistance($pmsid,$lat,$lng){
$distance=C('max_distance')*1000;
$sql="select ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($lat*PI()/180-lat*PI()/180)/2),2)+COS($lat*PI()/180)*COS(lat*PI()/180)*POW(SIN(($lng*PI()/180-lng*PI()/180)/2),2)))*1000) AS distance FROM toocms_administrator where site_id = $pmsid and is_root = 1";
$res=M()->query($sql);
// out(json_encode($res));
// out($pmsid.'---'.$lat.'---'.$lng);
// out($res[0]['distance']);
if(empty($res)){
out('仓储点不存在');
}
return $res[0]['distance']<$distance?true:false;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM