Ich nehme an, Sie haben die KML-Datei von Ihrem Google Standortverlauf heruntergeladen.
Da KML basierend auf dem XML-Standard eine tagbasierte Struktur mit verschachtelten Elementen und Attributen verwendet, können Sie die read-xml package verwenden, um die Daten aus Ihrer KML-Datei abzurufen. Diese
ist, was Ihre KML-Datei sein sollte:
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2' xmlns:gx='http://www.google.com/kml/ext/2.2'>
<Document>
<Placemark>
<open>1</open>
<gx:Track>
<altitudeMode>clampToGround</altitudeMode>
<when>2018-01-18T23:48:28Z</when>
<gx:coord>-16.9800841 32.6660673 0</gx:coord>
<when>2018-01-18T23:45:06Z</when>
...
<when>2013-12-05T09:03:41Z</when>
<gx:coord>-16.9251961 32.6586912 0</gx:coord>
</gx:Track>
</Placemark>
</Document>
</kml>
Dann habe ich den XML-Text Javascript Objekt/JSON Text konvertieren. Du musst diesen Schritt nicht machen, aber für mich ist es einfacher zu tun und zu erklären. Sie können das tun, indem Sie die xml-js package verwenden.
Eine andere Sache, die Sie tun müssen, ist den Wert dieses Tags <gx:coord>-16.9251961 32.6586912 0</gx:coord>
zu teilen, da Sie zuerst den Längengrad und dann den Breitengrad innerhalb desselben Tags haben.
var fs = require('fs'),
path = require('path'),
xmlReader = require('read-xml');
var convert = require('xml-js');
// If your file is located in a different directory than this javascript
// file, just change the directory path.
var FILE = path.join(__dirname, './history.kml');
xmlReader.readXML(fs.readFileSync(FILE), function(err, data) {
if (err) {
console.error(err);
}
var xml = data.content;
var result = JSON.parse(convert.xml2json(xml, {compact: true, spaces: 4}));
// If your KML file is different than the one I provided just change
// result.kml.Document.Placemark['gx:Track']['gx:coord'].
// As you can see it is similar with the KML file provided.
for(var i = 0; i < result.kml.Document.Placemark['gx:Track']['gx:coord'].length; i++){
var results = result.kml.Document.Placemark['gx:Track']['gx:coord'][i]._text;
// As I said before you have to split the returned value.
var coordinates = results.split(" ");
var longitude = coordinates[0];
var latitude = coordinates[1];
console.log("lat/long: " + latitude + ", " + longitude);
}
});
Ich hoffe, es könnte Ihnen helfen!