|
@@ -16,7 +16,7 @@ public class CoordTransformUtil {
|
|
|
private static final double PI = 3.1415926535897932384626;
|
|
|
private static final double a = 6378245.0;
|
|
|
private static final double ee = 0.00669342162296594323;
|
|
|
- private static final DecimalFormat decimalFormat = new DecimalFormat("#.000000");//保留七位
|
|
|
+ private static final DecimalFormat decimalFormat = new DecimalFormat("#.######");//保留七位
|
|
|
|
|
|
/**
|
|
|
* WGS84转GCj02
|
|
@@ -25,19 +25,9 @@ public class CoordTransformUtil {
|
|
|
* @param latStr 纬度 dd.dddd
|
|
|
*/
|
|
|
public static String[] wgs84toGcj02(String lngStr, String latStr) {
|
|
|
- double lat = Double.parseDouble(latStr);
|
|
|
- double lng = Double.parseDouble(lngStr);
|
|
|
-
|
|
|
- double dLat = transformLat(lng - 105.0, lat - 35.0);
|
|
|
- double dLng = transformLng(lng - 105.0, lat - 35.0);
|
|
|
- double radLat = lat / 180.0 * PI;
|
|
|
- double magic = Math.sin(radLat);
|
|
|
- magic = 1 - ee * magic * magic;
|
|
|
- double sqrtMagic = Math.sqrt(magic);
|
|
|
- dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);
|
|
|
- dLng = (dLng * 180.0) / (a / sqrtMagic * Math.cos(radLat) * PI);
|
|
|
- double mgLat = lat + dLat;
|
|
|
- double mgLng = lng + dLng;
|
|
|
+ double[] mgLatAndLag = common(lngStr, latStr);
|
|
|
+ double mgLat = mgLatAndLag[0];
|
|
|
+ double mgLng = mgLatAndLag[1];
|
|
|
return new String[]{decimalFormat.format(mgLng), decimalFormat.format(mgLat)};
|
|
|
}
|
|
|
|
|
@@ -48,6 +38,18 @@ public class CoordTransformUtil {
|
|
|
* @param latStr 纬度 dd.dddd
|
|
|
*/
|
|
|
public static String[] gcj02toWgs84(String lngStr, String latStr) {
|
|
|
+ double lat = Double.parseDouble(latStr);
|
|
|
+ double lng = Double.parseDouble(lngStr);
|
|
|
+ double[] mgLatAndLag = common(lngStr, latStr);
|
|
|
+ double mgLat = mgLatAndLag[0];
|
|
|
+ double mgLng = mgLatAndLag[1];
|
|
|
+ return new String[]{decimalFormat.format(lng * 2 - mgLng), decimalFormat.format(lat * 2 - mgLat)};
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * wgs84toGcj02 和 gcj02toWgs84 公共计算模块
|
|
|
+ */
|
|
|
+ private static double[] common(String lngStr, String latStr) {
|
|
|
double lat = Double.parseDouble(latStr);
|
|
|
double lng = Double.parseDouble(lngStr);
|
|
|
double dLat = transformLat(lng - 105.0, lat - 35.0);
|
|
@@ -60,7 +62,7 @@ public class CoordTransformUtil {
|
|
|
dLng = (dLng * 180.0) / (a / sqrtMagic * Math.cos(radLat) * PI);
|
|
|
double mgLat = lat + dLat;
|
|
|
double mgLng = lng + dLng;
|
|
|
- return new String[]{decimalFormat.format(lng * 2 - mgLng), decimalFormat.format(lat * 2 - mgLat)};
|
|
|
+ return new double[]{mgLat, mgLng};
|
|
|
}
|
|
|
|
|
|
/**
|