|
@@ -22,42 +22,26 @@ public class CoordinateUtil {
|
|
|
/**
|
|
|
* 度分秒转经纬度
|
|
|
*
|
|
|
- * @param dms 116°25'7.85"
|
|
|
- * @return 116.418847
|
|
|
+ * @param dms 045 57.193"
|
|
|
+ * @return 45.918847
|
|
|
*/
|
|
|
- public static double changeToDu(String dms) {
|
|
|
+ public static String changeToDu(String dms) {
|
|
|
if (dms == null)
|
|
|
- return 0;
|
|
|
+ return "";
|
|
|
try {
|
|
|
- dms = dms.replace(" ", "");
|
|
|
- String[] str2 = dms.split("°");
|
|
|
- if (str2.length < 2)
|
|
|
- return 0;
|
|
|
- int d = Integer.parseInt(str2[0]);
|
|
|
- String[] str3 = str2[1].split("′");
|
|
|
- if (str3.length < 2)
|
|
|
- return 0;
|
|
|
- int f = Integer.parseInt(str3[0]);
|
|
|
- String str4 = str3[1].substring(0, str3[1].length() - 1);
|
|
|
- BigDecimal m = new BigDecimal(str4);
|
|
|
- BigDecimal fen = BigDecimal.valueOf(f).add(m.divide(BigDecimal.valueOf(60), 8, RoundingMode.HALF_UP));
|
|
|
- BigDecimal du =
|
|
|
- fen.divide(BigDecimal.valueOf(60), 8, RoundingMode.HALF_UP).add(BigDecimal.valueOf(Math.abs(d)));
|
|
|
- if (du.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
- return -du.doubleValue();
|
|
|
+// dms = dms.replace(" ", "°");
|
|
|
+ String[] dm = dms.split(" ");
|
|
|
+ if(dm[0].length() < 2){
|
|
|
+ return "";
|
|
|
}
|
|
|
- return du.doubleValue();
|
|
|
- // double m = Double.parseDouble(str4);
|
|
|
- //
|
|
|
- // double fen = f + (m / 60);
|
|
|
- // double du = (fen / 60) + Math.abs(d);
|
|
|
- // if (d < 0)
|
|
|
- // du = -du;
|
|
|
- // return du;
|
|
|
+ BigDecimal dd = new BigDecimal(dm[0]);
|
|
|
+ BigDecimal ff = new BigDecimal(CalculationUtil.getNumberFromStringForDian(dm[1]));
|
|
|
+ BigDecimal df = dd.add(ff.divide(BigDecimal.valueOf(60), 4, RoundingMode.HALF_UP));
|
|
|
+ return df.toString();
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
- return 0;
|
|
|
+ return "";
|
|
|
}
|
|
|
|
|
|
}
|