Не удается заставить Android правильно записать данные GPS-координат GeoPoint в файл - PullRequest
1 голос
/ 17 февраля 2011

В настоящее время я пишу программное обеспечение для Android, которое принимает данные GPS в виде ArrayList из GeoPoints и записывает их в файл 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

Может кто-нибудь помочь мне найти это надоедливое десятичное число?

1 Ответ

2 голосов
/ 17 февраля 2011

E6 означает его широту * 1E6, поэтому для того, чтобы он выглядел как -45.57 против -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");
}
...