nakarte

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

commit b784e4e8759a08b61f42f58636508c317af10a81
parent b395e15aa42cfe2d2624618c2f2c5618fffc2c3d
Author: myadzel <myadzel@gmail.com>
Date:   Thu, 26 Sep 2019 16:57:59 +0300

load tracks from tracedetrail.com #250

Diffstat:
Msrc/lib/leaflet.control.track-list/lib/services/index.js | 2++
Asrc/lib/leaflet.control.track-list/lib/services/tracedetrail.js | 41+++++++++++++++++++++++++++++++++++++++++
Msrc/lib/leaflet.control.track-list/track-list.js | 2+-
3 files changed, 44 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 @@ -4,6 +4,7 @@ import Gpsies from './gpsies'; import Gpslib from './gpslib'; import Osm from './osm'; import Strava from './strava'; +import Tracedetrail from './tracedetrail'; import {YandexRuler} from './yandex'; import {NakarteTrack, NakarteUrl} from './nakarte'; import {MovescountMove, MovescountRoute} from './movescount'; @@ -17,6 +18,7 @@ export default [ Gpslib, Osm, Strava, + Tracedetrail, MovescountMove, MovescountRoute, SimpleService diff --git a/src/lib/leaflet.control.track-list/lib/services/tracedetrail.js b/src/lib/leaflet.control.track-list/lib/services/tracedetrail.js @@ -0,0 +1,41 @@ +import BaseService from './baseService'; +import urlViaCorsProxy from 'lib/CORSProxy'; +import L from 'leaflet'; + +class Tracedetrail extends BaseService { + urlRe = /^https?:\/\/tracedetrail\.[a-z]{2,}\/[a-z]{2}\/trace\/trace\/([0-9]+)/; + + isOurUrl() { + return this.urlRe.test(this.origUrl); + } + + requestOptions() { + const m = this.urlRe.exec(this.origUrl); + const trackId = this.trackId = m[1]; + + return [{ + url: urlViaCorsProxy(`https://tracedetrail.com/en/trace/geomSections/${trackId}`), + options: {responseType: 'json'} + }] + } + + parseResponse(responses) { + const response = responses[0]; + let name = `Tracedetrail track ${this.trackId}`; + try { + name = response.responseJSON.nom_fr || name; + const geometry = JSON.parse(response.responseJSON.geometry); + const proj = L.CRS.EPSG3857; + const points = geometry.map(item => proj.unproject(L.point(item.lon, item.lat))); + + return [{ + name, + tracks: [points] + }]; + } catch (e) { + return [{name, error: 'UNSUPPORTED'}]; + } + } +} + +export default Tracedetrail; 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"> + title="gpx kml Ozi zip YandexMaps GPSies Strava GPSLib Endomondo Movescount OSM Tracedetrail"> gpx kml Ozi zip YandexMaps GPSies Strava <span class="formats-hint-more">&hellip;</span> </div>