关于php依据用户当前定位判断距离最近的商家或者别的

先来一个算经纬度的网站,可以对比结果
https://www.hhlink.com/经纬度/
后台PHP:

    public function gwz()
    {
		$lon1=$this->request->post('lon');
		$lat1=$this->request->post('lng');
		$table=$this->request->post('table');//需要查询的表
        $sql = $this->distance_sql($lon1,$lat1);

        $row = Db::query("select * ,".$sql."as distance  from cd_".$table." HAVING distance <= '100000'");
		
        return json($row);
    }

根据对比经纬度网站结果,相差无几,大致位置就行,都是算的直线距离
网上例子太多了,都可以看到
更改

//$lon1 用户当前经度  $lat1用户当前纬度  $lon2数据库经度的字段名  $lat2数据库纬度的字段名
public function distance_sql($lon1='',$lat1='',$lon2='lon',$lat2='lng')
    {
		$PI = 3.1415926; 
		//这里 /1000 可去可不去,看需要
        $sql = "round(6378.138*2*asin(sqrt(pow(sin( ({$lat1}*$PI/180-{$lat2}*$PI/180)/2),2)+cos({$lat1}*$PI/180)*cos({$lat2}*$PI/180)* pow(sin( ({$lon1}*$PI/180-{$lon2}*$PI/180)/2),2)))*1000 / 1000) ";
        return $sql;
         
    }

最后的/1000 ,必须放进括号里面去,不然会当作字段去查询而报错没有这个字段,多细心点(对我自己说的)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页