commit df0e7514394d6c46b9a9bc349a59405d2fef13a1
parent 19565371fe491e01238ab9d67b5912a370acb547
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Mon, 26 Nov 2018 08:37:00 +0100
Merge branch 'osm-traces' of git://github.com/sikmir/nakarte into tracks-parsers-refactor-to-classes
Diffstat:
3 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/src/lib/leaflet.control.track-list/lib/services/index.js b/src/lib/leaflet.control.track-list/lib/services/index.js
@@ -2,6 +2,7 @@ import SimpleService from './simpleService'
import Endomondo from './endomondo';
import Gpsies from './gpsies';
import Gpslib from './gpslib';
+import Osm from './osm';
import Strava from './strava';
import {YandexRuler} from './yandex';
import {NakarteTrack, NakarteNktk, NakarteNktl} from './nakarte';
@@ -15,6 +16,7 @@ export default [
Endomondo,
Gpsies,
Gpslib,
+ Osm,
Strava,
MovescountMove,
MovescountRoute,
diff --git a/src/lib/leaflet.control.track-list/lib/services/osm.js b/src/lib/leaflet.control.track-list/lib/services/osm.js
@@ -0,0 +1,32 @@
+import urlViaCorsProxy from 'lib/CORSProxy';
+import BaseService from './baseService';
+import parseGpx from '../parsers/gpx';
+
+class Osm extends BaseService {
+ urlRe = /^https?:\/\/www\.openstreetmap\.org\/user\/(?:.*)\/traces\/(\d+)/;
+
+ getTrackId() {
+ const m = this.urlRe.exec(this.origUrl);
+ return m[1];
+ }
+
+ isOurUrl() {
+ return this.urlRe.test(this.origUrl);
+ }
+
+ requestOptions() {
+ const trackId = this.getTrackId();
+ return [{
+ url: urlViaCorsProxy(`https://www.openstreetmap.org/trace/${trackId}/data`),
+ options: {responseType: 'binarystring'}
+ }]
+ }
+
+ parseResponse(responses) {
+ const trackId = this.getTrackId();
+ const response = responses[0];
+ return parseGpx(response.responseBinaryText, `OSM track ${trackId}`, true);
+ }
+}
+
+export default Osm;
diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js
@@ -71,7 +71,7 @@ L.Control.TrackList = L.Control.extend({
<div class="leaflet-control-content">
<div class="header">
<div class="hint">
- gpx kml Ozi zip YandexMaps GPSies GPSLib Strava endomondo
+ gpx kml Ozi zip YandexMaps GPSies GPSLib OSM Strava endomondo
</div>
<div class="button-minimize" data-bind="click: setMinimized"></div>
</div>