通过经纬度 计算两点之间的距离

业务举例

新增发布订单的时候 有两个参数 一个是经度 一个是纬度。这两个参数都是用户所在地点的经纬度,现在要做的就是在列表查询中添加 与用户相隔多少米,以及添加距离排序

一、在xml(MYSQL)中新加映射 并引用

  <resultMap id="BaseResultMapDis" type="cn.wx........vo.DistanceVo">
        <result column="distance" property="distance" />
  </resultMap>

<select id="rentInPageListByMap" parameterType="map"  resultMap="BaseResultMapDis"></select>

三、距离SQL

ROUND(
        6378.138 * 2 * ASIN(
        SQRT(
        POW(
        SIN(

        (
        #{para.ulatitude} * PI() / 180 - latitude * PI() / 180
        ) / 2
        ),
        2
        ) + COS(#{para.ulatitude} * PI() / 180) * COS(latitude * PI() / 180) * POW(
        SIN(
        (
        #{para.ulongitude} * PI() / 180 - longitude * PI() / 180
        ) / 2
        ),
        2
        )
        )
        ) * 1000
        ) AS distance
  • {para.ulongitude} --- 前端传参

  • {para.ulatitude} --- 前端传参


排序的话最后 ORDER BY distance ASC

          java育儿园里的小学生“磨陀货”友情提供!!!
          请大家尊重原创,如要转载,请注明出处:
          转载自:https://www.jianshu.com/p/0b2ba1364796,谢谢!!

          有任何疑问,欢迎加入Java交流群458443587(加群时请备注)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。