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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM