可以在MySQL层面使用自定义计算函数来使用
CREATE DEFINER=`xxx`@`%` FUNCTION `get_distance`(
lat1 float,lon1 float,lat2 float,lon2 float) RETURNS float
SQL SECURITY INVOKER
BEGIN
RETURN ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN((lat1 * PI() / 180 - lat2 * PI() / 180) / 2), 2)
+ COS(lat1 * PI() / 180) * COS(lat2 * PI() / 180)
* POW(SIN(( lon1 * PI() / 180 - lon2 * PI() / 180 ) / 2),2))),2);
END
当然,MySQL 5.7 引入了 ST_Distance_Sphere, 这是一个计算两点之间距离的原生函数 (在地球上).
使用方式:
1148978.6738241839
更多使用参考:
- https://learnku.com/laravel/t/40975