Ich arbeite in einem Projekt, das analysiert und eine kml
schreiben Datei und speichert in sd card
, aber ich habe ein Problem, für Google Maps verfolgen den Pfad, den ich brauche, dass die Koordinaten alle zusammen sind, und meine Activity
nur tun, wie diese kml
Ausgabe:Kml Parsing in Android
<?xml version="1.0"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Placemark>
<name>Untitled Path</name>
<Style id="RedLine">
<LineStyle>
<color>7f0000ff</color>
<width>4</width>
</LineStyle>
</Style>
<styleUrl>#RedLine</styleUrl>
<LineString>
<tessellate>1</tessellate>
<altitudeMode>absolute</altitudeMode>
<coordinates>
-7.178449630737305,41.48063600063324,274.0
</coordinates>
</LineString>
</Placemark>
<Placemark>
<name>Untitled Path</name>
<Style id="RedLine">
<LineStyle>
<color>7f0000ff</color>
<width>4</width>
</LineStyle>
</Style>
<styleUrl>#RedLine</styleUrl>
<LineString>
<tessellate>1</tessellate>
<altitudeMode>absolute</altitudeMode>
<coordinates>
-7.178449630737305,41.48063600063324,274.0
</coordinates>
</LineString>
</Placemark>
</kml>
und meine Hauptklasse:
private void WriteToFile(Location loc) {
if (!logToGpx && !logToKml) {
return;
}
try {
boolean brandNewFile = false;
// if (root.canWrite()){
// File gpxFolder = new File("/sdcard/GPSLogger");
File gpxFolder = new File(Environment.getExternalStorageDirectory(), "GPSLogger");
Log.i("MAIN", String.valueOf(gpxFolder.canWrite()));
if (!gpxFolder.exists()) {
gpxFolder.mkdirs();
brandNewFile = true;
}
if (logToGpx) {
WriteToGpxFile(loc, gpxFolder, brandNewFile);
}
if (logToKml) {
WriteToKmlFile(loc, gpxFolder, brandNewFile);
}
} catch (Exception e) {
Log.e("Main", "Nao foi possivel criar o ficheiro " + e.getMessage());
SetStatus("Nao e possivel escrever no ficheiro. " + e.getMessage());
}
}
private void WriteToKmlFile(Location loc, File gpxFolder, boolean brandNewFile) {
try {
File kmlFile = new File(gpxFolder.getPath(), currentFileName + ".kml");
if (!kmlFile.exists()) {
kmlFile.createNewFile();
brandNewFile = true;
}
Date now = new Date();
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
//String dateTimeString = sdf.format(now);
if (brandNewFile) {
FileOutputStream initialWriter = new FileOutputStream(kmlFile, true);
BufferedOutputStream initialOutput = new BufferedOutputStream(initialWriter);
String initialXml = "<?xml version=\"1.0\"?>"+ "<kml xmlns=\"http://www.opengis.net/kml/2.2\">" + "</kml>";
initialOutput.write(initialXml.getBytes());
// initialOutput.write("\n".getBytes());
initialOutput.flush();
initialOutput.close();
}
long startPosition = kmlFile.length() - 6;
String placemark = "<Placemark><name>" + now.toLocaleString()
+ "</name><description>" + now.toLocaleString()
+ "</description>" + "<Point><coordinates>"
+ String.valueOf(loc.getLongitude()) + ","
+ String.valueOf(loc.getLatitude()) + ","
+ String.valueOf(loc.getAltitude())
+ "</coordinates></Point></Placemark></kml>";
RandomAccessFile raf = new RandomAccessFile(kmlFile, "rw");
raf.seek(startPosition);
raf.write(placemark.getBytes());
raf.close();
} catch (IOException e) {
Log.e("Main", "Error in writting " + e.getMessage());
SetStatus("Error in writting. " + e.getMessage());
}
}
Was mache ich falsch?