nakarte

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

commit b0dfe1194fadf7cd376eb8d032518ecb3aa7a544
parent 19a37ef0a182db03fa86d6def174f661ae097964
Author: Nikolay Korotkiy <sikmir@gmail.com>
Date:   Sun, 24 Mar 2019 01:45:49 +0300

[tracks] load tracks from etomesto url (#238)

Diffstat:
Asrc/lib/leaflet.control.track-list/lib/services/etomesto.js | 38++++++++++++++++++++++++++++++++++++++
Msrc/lib/leaflet.control.track-list/lib/services/index.js | 2++
Msrc/lib/leaflet.control.track-list/track-list.js | 2+-
3 files changed, 41 insertions(+), 1 deletion(-)

diff --git a/src/lib/leaflet.control.track-list/lib/services/etomesto.js b/src/lib/leaflet.control.track-list/lib/services/etomesto.js @@ -0,0 +1,38 @@ +import urlViaCorsProxy from 'lib/CORSProxy'; +import BaseService from './baseService'; +import parseGpx from '../parsers/gpx'; + +class Etomesto extends BaseService { + urlRe = /^https?:\/\/www\.etomesto\.ru\/track([a-z0-9]+)/; + + 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(`http://www.etomesto.ru/save/${trackId}.gpx`), + options: { + responseType: 'binarystring', + isResponseSuccess: (xhr) => ( + xhr.status === 200 && + !xhr.responseBinaryText.startsWith('ERROR')) + } + }] + } + + parseResponse(responses) { + const trackId = this.getTrackId(); + const response = responses[0]; + const name = `Etomesto track ${trackId}`; + return parseGpx(response.responseBinaryText, name, true) || [{name: name, error: 'UNSUPPORTED'}]; + } +} + +export default Etomesto; diff --git a/src/lib/leaflet.control.track-list/lib/services/index.js b/src/lib/leaflet.control.track-list/lib/services/index.js @@ -1,5 +1,6 @@ import SimpleService from './simpleService' import Endomondo from './endomondo'; +import Etomesto from './etomesto'; import Gpsies from './gpsies'; import Gpslib from './gpslib'; import Osm from './osm'; @@ -14,6 +15,7 @@ export default [ NakarteTrack, NakarteUrl, Endomondo, + Etomesto, Gpsies, Gpslib, Osm, diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js @@ -74,7 +74,7 @@ L.Control.TrackList = L.Control.extend({ <div class="leaflet-control-content"> <div class="header"> <div class="hint" - title="gpx kml Ozi zip YandexMaps GPSies Strava GPSLib Endomondo Movescount OSM Tracedetrail"> + title="gpx kml Ozi zip YandexMaps GPSies Strava GPSLib Endomondo Etomesto Movescount OSM Tracedetrail"> gpx kml Ozi zip YandexMaps GPSies Strava <span class="formats-hint-more">&hellip;</span> </div>