**
通过芯片获取到的经纬度信息,是不能直接使用的,下面是一个java的换算,其实就是度分秒的转换,不过他的数据有点坑。
**
我们获取到的数据一般是这种的:
$GNGGA,012135.000,3704.9891,N,11911.9880,E,1,11,1.3,33.6,M,0.4,M,0000*4F
使用方法分割之后
传入经纬度字符串(一定要是字符串) 然后返回一个double数组 0位经度,1位 纬度,直接使用即可
public double[] getGPSData(String j, String w) {
double[] LanLon = new double[2];
try {
String jingdu = j.split("\\.")[0].substring(0, j.split("\\.")[0].length() - 2);
String minutes = j.split("\\.")[0];
double dec_jingdu = (((Double.parseDouble(j) -
Double.parseDouble(j.split("\\.")[0])) * 60 / 3600 + (Double
.parseDouble(minutes.substring(minutes.length() - 2)) / 60)));
String weidu = w.split("\\.")[0].substring(0, w.split("\\.")[0].length() - 2);
String weidu_minutes = w.split("\\.")[0];
double dec_weidu = (((Double.parseDouble(w) -
Double.parseDouble(w.split("\\.")[0])) * 60 / 3600 + (Double
.parseDouble(weidu_minutes.substring(weidu_minutes.length() - 2)) / 60)));
LanLon[0] = (Double.parseDouble(jingdu) + dec_jingdu);
LanLon[1] = (Double.parseDouble(weidu) + dec_weidu);
} catch (Exception e) {
e.printStackTrace();
}
return LanLon;
}