MySQL 根据经纬度计算距离

CREATE FUNCTION `fun_get_distance` (
    `myLongitude` DECIMAL ( 20, 15 ),
    `myLatitude` DECIMAL ( 20, 15 ),
    `sysLongitude` DECIMAL ( 20, 15 ),
    `sysLatitude` DECIMAL ( 20, 15 )) RETURNS DECIMAL ( 20, 15 ) BEGIN
/*
`myLongitude` decimal(20,15),     我的经度
`myLatitude` decimal(20,15),      我的纬度
`sysLongitude` decimal(20,15), 系统的经度
`sysLatitude` decimal(20,15)   系统的纬度
*/
    DECLARE
        distance DECIMAL ( 20, 15 );
    
    SET distance = 6378.138 * 2 * ASIN(
        SQRT(
            POW( SIN(( myLatitude * PI() / 180 - sysLatitude * PI() / 180 ) / 2 ), 2 ) + COS( myLatitude * PI() / 180 ) * COS( sysLatitude * PI() / 180 ) * POW( SIN( ( myLongitude * PI() / 180 - sysLongitude * PI() / 180 ) / 2 ), 2 ) 
        ) 
    );
    RETURN distance;

END

 

posted @ 2022-11-13 10:31  陈宝  阅读(138)  评论(0编辑  收藏  举报