#1 pgsql
项目场景:
通过pgsql的point类型的字段,我这里字段是location,存的内容是(119.358265,26.045794)
添加空间插件
CREATE EXTENSION postgis;
解决方案:
select t.*,
ST_DistanceSphere(st_setsrid(st_makepoint(t.location[0],t.location[1]),4326),
st_setsrid(st_makepoint(#{lng},#{lat}),4326)) AS distance
from 表名 t
where ST_DistanceSphere(
st_setsrid(st_makepoint(t.location[0],t.location[1]),4326),
st_setsrid(st_makepoint(#{lng},#{lat}),4326)) <= #{meter}
order by distance Asc
备注:
t.location[0] t.location[1]
这俩个是location字段的经纬度,拿的就是119.358265和26.045794
#{lng},#{lat}
用户的位置的经纬度
#{meter}
值的单位米
网上很多用ST_Distance_Sphere
但是我的不行,可能是版本问题