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