Mysql 如何根据经纬度计算距离

傻子才用真名  2017-12-15 08:32  ·  78 浏览

mysql 表名 bars,字段 lat 为纬度,lng 为经度

传入参数 纬度 40.0497810000,经度 116.3424590000,查询表内距离自己最近的酒吧

SELECT
    *,
    ROUND(
        6378.138 * 2 * ASIN(
            SQRT(
                POW(
                    SIN(
                        (
                            40.0497810000 * PI() / 180 - lat * PI() / 180
                        ) / 2
                    ),
                    2
                ) + COS(40.0497810000 * PI() / 180) * COS(lat * PI() / 180) * POW(
                    SIN(
                        (
                            116.3424590000 * PI() / 180 - lng * PI() / 180
                        ) / 2
                    ),
                    2
                )
            )
        ) * 1000
    ) AS distance
FROM
    bars
WHERE
    lat!='0' or lng!='0'
ORDER BY
    distance ASC
LIMIT 0,100

参考地址 http://www.cnblogs.com/jiafuwei/p/5699091.html

0个回答