nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit 22241ebc703e2a71ce60ce061db03a416e7d6512
parent 646149ea30acf746535bcee513c0ace1e4826688
Author: Nikolay Korotkiy <sikmir@gmail.com>
Date:   Sat, 24 Nov 2018 19:53:19 +0300

[tracks] load tracks from osm url #181

Diffstat:
Msrc/lib/leaflet.control.track-list/lib/services/index.js | 2++
Asrc/lib/leaflet.control.track-list/lib/services/osm.js | 32++++++++++++++++++++++++++++++++
Msrc/lib/leaflet.control.track-list/track-list.js | 2+-
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'; @@ -14,6 +15,7 @@ export default [ Endomondo, Gpsies, Gpslib, + Osm, Strava, SimpleService ] \ No newline at end of file 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>