public String instance(){
String resourceGIS = "104.1192,30.620821"; //经度,维度
String targetGIS = "104.1196645,30.6416184"; //经度,维度
int i = resourceGIS .indexOf(",");
String resourceLong = resourceGIS .subString(0,i)
String resourceLatitude = resourceGIS .subString(i+1,resourceGIS.length());
int j = resourceGIS .indexOf(",");
String targetLong = targetGIS .subString(0,j)
String targetLatitude = targetGIS .subString(i+1,resourceGIS.length());
//判断传入的gis位置是否为空,如果为空,就不计算距离了
if(StringUtils.isBlank(resourceLong )||StringUtils.isBlank(resourceLatitude )){
return null;
}
if(StringUtils.isBlank(targetLong )||StringUtils.isBlank(targetLatitude )){
return null;
}
GlobalCoordinates source = new GlobalCoordinates(Double.parseDouble(resourceLatitude),Double.parseDouble(resourceLong));
GlobalCoordinates target = new GlobalCoordinates(Double.parseDouble(targetLatitude),Double.parseDouble(targetLong));
//得到的数据是double数据类型的,单位是米
double meter = getDistanceMeter(source, target, Ellipsoid.Sphere);
//将double数据类型转换为long类型,这样小数点后面的数据就去掉了,得到的是整数
long instance = (new Double(meter)).longValue();
return String.valueOf(instance);
}
//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
private static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid){
GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
return geoCurve.getEllipsoidalDistance();
}
需要下载依赖包,将下面的maven依赖加到pom文件中就行
<dependency>
<groupId>org.gavaghan</groupId>
<artifactId>geodesy</artifactId>
<version>1.1.3</version>
</dependency>