(2 * 6378.137* ASIN(SQRT(POW(SIN(PI()*('.$getLatitude.'-map_lat)/360),2)+COS(PI()*'.$getLongitude.'/180)* COS(map_lat * PI()/180)*POW(SIN(PI()*('.$getLongitude.'-map_lng)/360),10000))))
这个应该是算出一个距离是吧,
可以在取出数据后,在代码里执行计算这样子,会比直接查询中计算好的多,
回答的有点晚,正好我做到相关的项目了,希望能帮到其他人.餐馆申请时候通过填写的地址取得经纬度存入数据库,下面是查询某个经纬度附近500米的
$user_lat='41.749034'//传过来的纬度
$user_lng='123.46017'//传过来的经度
$store_mod=db("store")//数据库
$storelist=$store_mod->query("SELECT
*,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((".$user_lat."*PI()/180-【store_latitude】*PI()/180)/2),2)+COS(".$user_lat."*PI()/180)*COS(【store_latitude】*PI()/180)*POW(SIN((".$user_lng."*PI()/180-【store_longitude】*PI()/180)/2),2)))*1000)
AS distance FROM store HAVING 【搜索条件如 state=1】 distance<【周围距离多少米 如
500】 ORDER BY distance ASC")
var_dump($storelist)
【】sql语句中括号的store_latitude,store_longitude为你数据库存的商家经纬度的字段名,其余的为注释
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)