commit 25c9f2f6b265e8811261430e5adda46279368394
parent dae7230ad51bcfd5429ac363127466a59fb1633c
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Tue, 7 Nov 2017 22:56:27 +0300
[tracks] added loading routes from ozi .rte files
Diffstat:
1 file changed, 38 insertions(+), 0 deletions(-)
diff --git a/src/lib/leaflet.control.track-list/lib/geo_file_formats.js b/src/lib/leaflet.control.track-list/lib/geo_file_formats.js
@@ -134,6 +134,43 @@ function parseGpx(txt, name, preferNameFromFile) {
}
+function parseOziRte(txt, name) {
+ let error, segments = [];
+ const lines = txt.split('\n');
+ if (lines[0].indexOf('OziExplorer Route File') !== 0) {
+ return null;
+ }
+ let currentSegment = [];
+ for (let i=4; i < lines.length; i++) {
+ let line = lines[i].trim();
+ if (!line) {
+ continue;
+ }
+ let fields = line.split(',');
+ if (fields[0] === 'R') {
+ if (currentSegment.length) {
+ segments.push(currentSegment);
+ }
+ currentSegment = [];
+ } else if (fields[0] === 'W') {
+ let lat = parseFloat(fields[5]);
+ let lng = parseFloat(fields[6]);
+ if (isNaN(lat) || isNaN(lng)) {
+ error = 'CORRUPT';
+ break;
+ }
+ currentSegment.push({lat, lng});
+ } else {
+ error = 'CORRUPT';
+ break
+ }
+ }
+ if (currentSegment.length) {
+ segments.push(currentSegment);
+ }
+ return [{name, tracks: segments, error}];
+}
+
function parseOziPlt(txt, name) {
var error;
var segments = [];
@@ -729,6 +766,7 @@ function parseGeoFile(name, data, preferNameFromFile) {
parseKmz,
parseZip,
parseGpx,
+ parseOziRte,
parseOziPlt,
parseOziWpt,
parseKml,