nakarte

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

commit 6a8ff60923d4b95b8a057d7cef622dc655da658c
parent f633f4b271798911efe2a85702b9cba774bf7741
Author: Nikolay Korotkiy <sikmir@gmail.com>
Date:   Tue,  4 Aug 2020 08:18:50 +0300

tracks: load tracks from openstreetmap.ru

Diffstat:
Msrc/lib/leaflet.control.track-list/lib/services/index.js | 2++
Asrc/lib/leaflet.control.track-list/lib/services/openstreetmapRu.js | 33+++++++++++++++++++++++++++++++++
Msrc/lib/leaflet.control.track-list/track-list.js | 2+-
3 files changed, 36 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 @@ -11,6 +11,7 @@ import {NakarteTrack, NakarteUrl} from './nakarte'; import {MovescountMove, MovescountRoute} from './movescount'; import {GarminActivity, GarminRoute} from './garmin'; import {SportsTrackerActivity} from './sportstracker'; +import OpenStreetMapRu from './openstreetmapRu'; export default [ YandexRuler, @@ -28,5 +29,6 @@ export default [ GarminActivity, GarminRoute, SportsTrackerActivity, + OpenStreetMapRu, SimpleService ]; diff --git a/src/lib/leaflet.control.track-list/lib/services/openstreetmapRu.js b/src/lib/leaflet.control.track-list/lib/services/openstreetmapRu.js @@ -0,0 +1,33 @@ +import urlViaCorsProxy from '~/lib/CORSProxy'; +import BaseService from './baseService'; +import parseGpx from '../parsers/gpx'; + +class OpenStreetMapRu extends BaseService { + urlRe = /^https?:\/\/(?:www\.)?openstreetmap\.ru\/\?mapid=(\d+)/u; + + 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://openstreetmap.ru/mymap.php?id=${trackId}&format=gpx`), + options: {responseType: 'binarystring'} + }]; + } + + parseResponse(responses) { + const trackId = this.getTrackId(); + const response = responses[0]; + return parseGpx(response.responseBinaryText, `PersonalMap ${trackId}`, true) || + [{name: name, error: 'UNSUPPORTED'}]; + } +} + +export default OpenStreetMapRu; diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js @@ -109,7 +109,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 Etomesto Movescount GarminConnect SportsTracker OSM Tracedetrail"> + title="gpx kml Ozi zip YandexMaps GPSies Strava GPSLib Endomondo Etomesto Movescount GarminConnect SportsTracker OSM Tracedetrail OpenStreetMap.ru"> gpx kml Ozi zip YandexMaps GPSies Strava <span class="formats-hint-more">&hellip;</span> </div>