create or replace procedure SP_GET_DISTANCE (cx in number,cy in number,sx in number, sy in number,distance out varchar2) is d number; x number; y number; r number; pi number; begin --开始计算 r:=6371229;--地球半径 pi:=3.14159265358979323;--圆周率 x:=(sx-cx)*pi*r*cos((sy+cy)/2*pi/180)/180; y:=(sy-cy)*pi*r/180; d:=SQRT(power(x,2)+power(y,2)); distance:=to_char(d,9999999999999.99); end SP_GET_DISTANCE;
package com.wpn.web.util;
public class Distance { private final static double PI = 3.14159265358979323;// 圆周率 private final static double R = 6371229; // 地球的半径
private Distance() { }
/** * 纬度lat 经度lon * @param longt1 * @param lat1 * @param longt2 * @param lat2 * @return */ public static double getDistance(double longt1, double lat1, double longt2, double lat2) { double x, y, distance; x = (longt2 - longt1) * PI * R * Math.cos(((lat1 + lat2) / 2) * PI / 180) / 180; y = (lat2 - lat1) * PI * R / 180; distance = Math.hypot(x, y); return distance; }