mysql 根据经纬度计算距离的算法

latitude 39.9639740000

longitude 116.4747040000

sql 查询语句, 距离单位是 m

    SELECT
        *,
        ROUND(
            6378.138 * 2 * ASIN(
                SQRT(
                    POW(
                        SIN(
                            (
                                39.9639740000 * PI() / 180 - lat * PI() / 180
                            ) / 2
                        ),
                        2
                    ) + COS(39.9639740000 * PI() / 180) * COS(lat * PI() / 180) * POW(
                        SIN(
                            (
                                116.4747040000 * PI() / 180 - lon * PI() / 180
                            ) / 2
                        ),
                        2
                    )
                )
            ) * 1000
        ) AS distance
    FROM
        area
    ORDER BY
        distance ASC

你可能感兴趣的:(mysql 根据经纬度计算距离的算法)