這裡用到的演算法和地球半徑等資料均來自網路,此文只作整理記錄。
地球半徑值採用赤道半徑 6378137.0米,這是1980年的國際標準資料。
//儲存過程 CREATE FUNCTION [f_GetDistance] ( @GPSLng DECIMAL(12,6), @GPSLat DECIMAL(12,6) ) RETURNS DECIMAL(12,4) AS BEGIN DECLARE @result DECIMAL(12,4) SELECT @result = 6378137.0*ACOS(SIN(@GPSLat/180*PI())*SIN(Lat/180*PI())+COS(@GPSLat/180*PI())*COS(Lat/180*PI())*COS((@GPSLng-Lng)/180*PI())) RETURN @result END GO //查詢語句 select *,(6378137.0*ACOS(SIN(@GPSLat/180*PI())*SIN(Lat/180*PI())+COS(@GPSLat/180*PI())*COS(Lat/180*PI())*COS((@GPSLng-Lng)/180*PI()))) as distance from tab_address