数据库中计算两地图坐标点之间的距离

阅读更多
CREATE OR REPLACE FUNCTION DISTANCEBYLNGLAT(LNG1 IN NUMBER,
                                            LAT1 IN NUMBER,
                                            LNG2 IN NUMBER,
                                            LAT2 IN NUMBER) RETURN NUMBER IS
  /********************
  数据库中计算两地图坐标点之间的距离
  返回公里数
  ********************/
  RADLAT1 NUMBER;
  RADLAT2 NUMBER;
  A       NUMBER;
  B       NUMBER;
  S       NUMBER;
BEGIN
  RADLAT1 := (LAT1 * ACOS(-1)) / 180.0;
  RADLAT2 := (LAT2 * ACOS(-1)) / 180.0;
  A       := RADLAT1 - RADLAT2;
  B       := ((LNG1 * ACOS(-1)) / 180.0) - ((LNG2 * ACOS(-1)) / 180.0);
  S       := 2 *
             ASIN(SQRT(POWER(SIN(A / 2), 2) +
                       COS(RADLAT1) * COS(RADLAT2) * POWER(SIN(B / 2), 2)));
  S       := S * 6378137.0; --取WGS84标准参考椭球中的地球长半径(单位:M)
  S       := ROUND(S * 10) / 10000;
  RETURN S;
END DISTANCEBYLNGLAT;

 附带javascript





    无标题页
    


    
test me

 

你可能感兴趣的:(数据库中计算两地图坐标点之间的距离)