sql (mysql)怎么实现查询某一个经纬度周围500米距离的餐馆,数据库存放所有餐馆的经纬度?

sql (mysql)怎么实现查询某一个经纬度周围500米距离的餐馆,数据库存放所有餐馆的经纬度?,第1张

回答的有点晚,正好我做到相关的项目了,希望能帮到其他人.

餐馆申请时候通过填写的地址取得纬度存入数据库,下面是查询某个经纬度附近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为你数据库存的商家经纬度的字段名,其余的为注释

可以使用字符串varchar,然后取出数据之后将字符串转化为double类型或float类型

可以存储这些经/纬度数据,如波纹管 -

$arr = array("13.692941, 100.750723", 

"13.70649,100.75405999999998",

"13.71334,100.75428999999997",

"13.72268,100.74638000000004")

// serialize data before save to database, you should deserialized that when you will use this data after query. 

$serializedArr = serialize($arr)

insert into geom (g) values ("{$serializedArr}")

selectwei,jingfromtestorderbr((wei-100)*(wei-100)+(jing-100)*(jing-100))wei是纬度字段,jing是经度字段,test是你存的表,现在查的是离(100,100)这个点由近到远排序的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8613003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存