commit dae7230ad51bcfd5429ac363127466a59fb1633c
parent da375f28364aab590711a18711b45e2afcbe567a
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Tue, 7 Nov 2017 21:46:50 +0300
[tracks] added loadint routes from gpx files
Diffstat:
1 file changed, 29 insertions(+), 1 deletion(-)
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
@@ -47,6 +47,34 @@ function parseGpx(txt, name, preferNameFromFile) {
return segments;
};
+ function getRoutePoints(rte_element) {
+ var points_elements = rte_element.getElementsByTagName('rtept');
+ var points = [];
+ for (var i = 0; i < points_elements.length; i++) {
+ var point_element = points_elements[i];
+ var lat = parseFloat(point_element.getAttribute('lat'));
+ var lng = parseFloat(point_element.getAttribute('lon'));
+ if (isNaN(lat) || isNaN(lng)) {
+ error = 'CORRUPT';
+ break;
+ }
+ points.push({lat: lat, lng: lng});
+ }
+ return points;
+ }
+
+ var getRoutes = function(xml) {
+ var routes = [];
+ var rte_elements = xml.getElementsByTagName('rte');
+ for (var i = 0; i < rte_elements.length; i++) {
+ var rte_points = getRoutePoints(rte_elements[i]);
+ if (rte_points.length) {
+ routes.push(rte_points);
+ }
+ }
+ return routes;
+ };
+
var getWaypoints = function(xml) {
var waypoint_elements = xml.getElementsByTagName('wpt');
var waypoints = [];
@@ -99,7 +127,7 @@ function parseGpx(txt, name, preferNameFromFile) {
}
return [{
name: name,
- tracks: getTrackSegments(dom),
+ tracks: getTrackSegments(dom).concat(getRoutes(dom)),
points: getWaypoints(dom),
error: error
}];