關於php依據使用者當前定位判斷距離最近的商家或者別的

發表於2020-12-06

先來一個算經緯度的網站,可以對比結果
https://www.hhlink.com/經緯度/
後臺PHP:

//$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;
         
    }
    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);
    }

根據對比經緯度網站結果,相差無幾,大致位置就行
網上例子太多了,都可以看到

相關文章