mysql 坐标查询计算距离

-- 6378.138这个是地球的直径,单位千米.latitude是用户位置的纬度,longitude是用户位置经度.latitude 为商户的纬度字段,
-- longitude为商户的经度字段。上面一段sql计算得出根据用户经纬度计算与商户的距离。
-- 30.5821398542,
 
SELECT
    ROUND(
        6378.138 * 2 * ASIN(
            SQRT(
                POW(
                    SIN(
                        (
                            传入维度 * PI() / 180 - s.lat * PI() / 180
                        ) / 2
                    ),
                    2
                ) + COS(传入维度 * PI() / 180) * COS(s.lat * PI() / 180) * POW(
                    SIN(
                        (
                            传入经度 * PI() / 180 - s.lon * PI() / 180
                        ) / 2
                    ),
                    2
                )
            )
        ) * 1000
    ) AS distance,
    id,
    `name`
FROM
    shop s
HAVING
    distance <= 5000
ORDER BY
    distance ASC

 

posted @ 2019-10-24 15:17  蜗牛的信仰  阅读(3709)  评论(0编辑  收藏  举报