天天看点

java 根据经纬度 坐标 计算两点之间的距离

根据经纬度,坐标,计算两点之间的距离:

参数格式如下:每一个param的两个值之间用分号分割

@param1  positionone =aa.bbbb;cc.dddd

@param2  positionone =ee.bbbb;gg.dddd

public static double getdistance(string positionone, string positiontwo)

{

double long1;

double lat1;

double long2;

double lat2;

double distance = 0d;

if (positionone != null && positionone.length() > 0

&& positiontwo != null && positiontwo.length() > 0)

string positionarrayone[] = positionone.split(";");

string positionarraytwo[] = positiontwo.split(";");

try

long1 = double.parsedouble(positionarrayone[0]);

lat1 = double.parsedouble(positionarrayone[1]);

long2 = double.parsedouble(positionarraytwo[0]);

lat2 = double.parsedouble(positionarraytwo[1]);

if (long1 >= 0 && lat1 >= 0 && long2 >= 0 && lat2 >= 0)

double a, b, r;

r = 6378137; // 地球半径

lat1 = lat1 * math.pi / 180.0;

lat2 = lat2 * math.pi / 180.0;

a = lat1 - lat2;

b = (long1 - long2) * math.pi / 180.0;

double sa2, sb2;

sa2 = math.sin(a / 2.0);

sb2 = math.sin(b / 2.0);

distance = 2

* r

* math.asin(math.sqrt(sa2 * sa2 + math.cos(lat1)

* math.cos(lat2) * sb2 * sb2));

}

catch (exception e)

return distance;