-- ============================================= -- Author:Forrest -- Create date: 2013-07-16 -- Description: 根据经纬度计算两点间的距离;返回米(m) -- ============================================= ALTER FUNCTION [dbo].[Fun_MathRange] ( @in_Lat1 decimal(18,6), @in_Lng1 decimal(18,6), @in_Lat2 decimal(18,6), @in_Lng2 decimal(18,6) ) RETURNS int AS BEGIN set @in_Lat1 = @in_Lat1 * PI() / 180.0; set @in_Lat2 = @in_Lat2 * PI() / 180.0; set @in_Lng1 = @in_Lng1 * PI() / 180.0; set @in_Lng2 = @in_Lng2 * PI() / 180.0; declare @a decimal(18,6),@b decimal(18,6),@c decimal(18,6) set @a = @in_Lat1 - @in_Lat2; set @b = @in_Lng1 - @in_Lng2; set @c = 2 * Asin(Sqrt(Power(Sin(@a/2),2) + Cos(@in_Lat1)*Cos(@in_Lat2)*Power(Sin(@b/2),2))) set @c = @c * 6378.137 --地球半径,单位:千米 set @c = Round(@c * 10000,3) / 10000 set @c = @c*1000 return @c END