通过地理位置定位查询  附近五公里的  数据

如下代码 原生的sql语句

具体 sql 执行方式视 实际情况 修改 不能照搬!/*

* 地图定位

*/

public function dingwei()

{

$latitude = input('latitude'); //当前坐标纬度

$longitude = input('longitude'); //当前坐标经度

$distance = 5; //5公里以内的信息,这里的5公里为半径。

// 此查询无排序

$sql = "select * from  v5_university_info where sqrt( ( ((".$longitude."-Longitude)*PI()*12656*cos(((".$latitude."+Latitude)/2)*PI()/180)/180) * ((".$longitude."-Longitude)*PI()*12656*cos (((".$latitude."+Latitude)/2)*PI()/180)/180) ) + ( ((".$latitude."-Latitude)*PI()*12656/180) * ((".$latitude."-Latitude)*PI()*12656/180) ) )/2 

p($sql);

$res = Db::query($sql);

p($res);

// 加入排序,从最近到最远排序。

$sql = "select `university`, sqrt( ( ((".$longitude." - Longitude)*PI()*12656*cos(((".$latitude." + Latitude)/2)*PI()/180)/180) * ((".$longitude." - Longitude)*PI()*12656*cos (((".$latitude." + Latitude)/2)*PI()/180)/180) ) + ( ((".$latitude." - Latitude)*PI()*12656/180) * ((".$latitude." - Latitude)*PI()*12656/180) ) )/2 as dis

from v5_university_info group by dis asc having dis 

$res = Db::query($sql);

return $res;

}

9d7e3818b3f0cfeb0cc144d9dd459509.png

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐