我目前正在为Android编写一些软件,它以GeoPoints的ArrayList形式获取gps数据并将其写入KML文件。文件的其余部分创建正常,但是当gps数据以下列方式写入文件时:
for(int i=0; i < geoPoints.size(); i++){
writer.write(geoPoints.get(i).getLatitudeE6());
writer.write(", ");
writer.write(geoPoints.get(i).getLongitudeE6());
writer.write("\n");
}
文件的输出是随机字符:
ꗺ, 繿
ꔚ, 练
鬅, 眑
如果我更改循环以将其转换为字符串:
for(int i=0; i < geoPoints.size(); i++){
writer.write(Integer.toString(geoPoints.get(i).getLatitudeE6()));
writer.write(", ");
writer.write(Integer.toString(geoPoints.get(i).getLongitudeE6()));
writer.write("\n");
}
然后输出几乎是正确的,但没有小数位?
-45570790, 167608003
-45571713, 167608345
-45572973, 167606660
任何人都可以帮我找到那个讨厌的小数吗?
答案 0 :(得分:2)
E6表示它的纬度* 1E6,因此它看起来像-45.57 vs -45570790,你需要除以1E6。
for(int i=0; i < geoPoints.size(); i++){
writer.write(Integer.toString(geoPoints.get(i).getLatitudeE6() / 1E6));
writer.write(", ");
writer.write(Integer.toString(geoPoints.get(i).getLongitudeE6() / 1E6));
writer.write("\n");
}