commit 8e79d6bb41839a988e94b6eae8017eaead91c25b
parent 88f0cfbf1b848a375252bd34c7aa36fd631c7772
Author: Igor Sidorov <igor.sidorov@binarycode.ru>
Date: Tue, 29 May 2018 10:07:40 +0300
Move isOverlay, isOverlayTransparent and shortName to layer options
Diffstat:
4 files changed, 544 insertions(+), 230 deletions(-)
diff --git a/src/layers.js b/src/layers.js
@@ -20,245 +20,390 @@ export default function getLayers() {
{
title: 'OpenStreetMap',
description: 'OSM default style',
- shortName: 'osm',
order: 100,
- isOverlay: false,
isDefault: true,
layer: L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
- {code: 'O', scaleDependent: true, print: true, jnx: true}
+ {
+ code: 'O',
+ scaleDependent: true,
+ print: true,
+ jnx: true,
+ shortName: 'osm'
+ }
)
},
{
title: 'ESRI Sat',
- shortName: 'esri',
order: 200,
- isOverlay: false,
isDefault: true,
layer: L.tileLayer(
'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
- {code: 'E', scaleDependent: false, maxNativeZoom: 18, print: true, jnx: true}
+ {
+ code: 'E',
+ scaleDependent: false,
+ maxNativeZoom: 18,
+ print: true,
+ jnx: true,
+ shortName: 'esri'
+ }
)
},
{
title: 'Yandex map',
- shortName: 'yandex',
order: 300,
- isOverlay: false,
isDefault: true,
- layer: new L.Layer.Yandex('map', {scaleDependent: true, code: 'Y', print: true, jnx: true})
+ layer: new L.Layer.Yandex('map',
+ {
+ scaleDependent: true,
+ code: 'Y',
+ print: true,
+ jnx: true,
+ shortName: 'yandex'
+ }
+ )
},
{
title: 'Yandex Satellite',
- shortName: 'yandex_sat',
order: 400,
- isOverlay: false,
isDefault: true,
- layer: new L.Layer.Yandex('sat', {scaleDependent: false, code: 'S', print: true, jnx: true})
+ layer: new L.Layer.Yandex('sat',
+ {
+ scaleDependent: false,
+ code: 'S',
+ print: true,
+ jnx: true,
+ shortName: 'yandex_sat'
+ }
+ )
},
{
title: 'Google',
- shortName: 'google',
order: 500,
- isOverlay: false,
isDefault: true,
- layer: new L.Layer.Google('ROADMAP', {code: 'G', scaleDependent: true, print: true, jnx: true})
+ layer: new L.Layer.Google('ROADMAP',
+ {
+ code: 'G',
+ scaleDependent: true,
+ print: true,
+ jnx: true,
+ shortName: 'google'
+ }
+ )
},
{
title: 'Google Satellite',
- shortName: 'google_sat',
order: 600,
- isOverlay: false,
isDefault: true,
- layer: new L.Layer.Google('SATELLITE', {code: 'L', scaleDependent: false, print: true, jnx: true})
+ layer: new L.Layer.Google('SATELLITE',
+ {
+ code: 'L',
+ scaleDependent: false,
+ print: true,
+ jnx: true,
+ shortName: 'google_sat'
+ }
+ )
},
{
title: 'Google Terrain',
- shortName: 'google_terrain',
order: 650,
- isOverlay: false,
isDefault: true,
- layer: new L.Layer.Google('TERRAIN', {code: 'P', scaleDependent: false, print: true, jnx: true})
+ layer: new L.Layer.Google('TERRAIN',
+ {
+ code: 'P',
+ scaleDependent: false,
+ print: true,
+ jnx: true,
+ shortName: 'google_terrain'
+ }
+ )
},
{
title: 'Bing Sat',
- shortName: 'bing',
order: 700,
- isOverlay: false,
isDefault: true,
- layer: new BingLayer(config.bingKey, {code: 'I', scaleDependent: false, print: true, jnx: true})
+ layer: new BingLayer(config.bingKey,
+ {
+ code: 'I',
+ scaleDependent: false,
+ print: true,
+ jnx: true,
+ shortName: 'bing'
+ }
+ )
},
{
title: 'marshruty.ru',
- shortName: 'marshruty',
order: 800,
- isOverlay: false,
isDefault: true,
layer: L.tileLayer('https://maps.marshruty.ru/ml.ashx?x={x}&y={y}&z={z}&i=1&al=1',
- {code: 'M', maxNativeZoom: 18, noCors: true, scaleDependent: true, print: true, jnx: true}
+ {
+ code: 'M',
+ maxNativeZoom: 18,
+ noCors: true,
+ scaleDependent: true,
+ print: true,
+ jnx: true,
+ shortName: 'marshruty'
+ }
)
},
{
title: 'Topomapper 1km',
- shortName: 'topomapper_1k',
order: 900,
- isOverlay: false,
isDefault: true,
layer: L.tileLayer(
'http://144.76.234.108/cgi-bin/tapp/tilecache.py/1.0.0/topomapper_v2/{z}/{x}/{y}.jpg',
- {code: 'T', scaleDependent: false, maxNativeZoom: 13, noCors: true, print: true, jnx: true}
+ {
+ code: 'T',
+ scaleDependent: false,
+ maxNativeZoom: 13,
+ noCors: true,
+ print: true,
+ jnx: true,
+ shortName: 'topomapper_1k'
+ }
)
},
{
title: 'Topo 10km',
- shortName: 'topo_10k',
order: 10100,
- isOverlay: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/topo001m/{z}/{x}/{y}",
- {code: 'D', tms: true, scaleDependent: false, maxNativeZoom: 9, print: true, jnx: true}
+ {
+ code: 'D',
+ isOverlay: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 9,
+ print: true,
+ jnx: true,
+ shortName: 'topo_10k'
+ }
)
},
{
title: 'GGC 2 km',
- shortName: 'ggc_2k',
order: 10200,
- isOverlay: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/ggc2000/{z}/{x}/{y}",
- {code: 'N', tms: true, scaleDependent: false, maxNativeZoom: 12, print: true, jnx: true}
+ {
+ code: 'N',
+ isOverlay: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 12,
+ print: true,
+ jnx: true,
+ shortName: 'ggc_2k'
+ }
)
},
{
title: 'ArbaletMO',
- shortName: 'arbalet',
order: 10300,
- isOverlay: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/ArbaletMO/{z}/{x}/{y}",
- {code: 'A', tms: true, scaleDependent: false, maxNativeZoom: 13, print: true, jnx: true}
+ {
+ code: 'A',
+ isOverlay: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 13,
+ print: true,
+ jnx: true,
+ shortName: 'arbalet'
+ }
)
},
{
title: 'Slazav mountains',
- shortName: 'slazav_mountains',
order: 10400,
- isOverlay: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/map_hr/{z}/{x}/{y}",
- {code: 'Q', tms: true, scaleDependent: false, maxNativeZoom: 13, print: true, jnx: true}
+ {
+ code: 'Q',
+ isOverlay: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 13,
+ print: true,
+ jnx: true,
+ shortName: 'slazav_mountains'
+ }
)
},
{
title: 'GGC 1km',
- shortName: 'ggc_1k',
order: 10500,
- isOverlay: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/ggc1000/{z}/{x}/{y}",
- {code: 'J', tms: true, scaleDependent: false, maxNativeZoom: 13, print: true, jnx: true}
+ {
+ code: 'J',
+ isOverlay: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 13,
+ print: true,
+ jnx: true,
+ shortName: 'ggc_1k'
+ }
)
},
{
title: 'Topo 1km',
- shortName: 'topo_1k',
order: 10600,
- isOverlay: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/topo1000/{z}/{x}/{y}",
- {code: 'C', tms: true, scaleDependent: false, maxNativeZoom: 13, print: true, jnx: true}
+ {
+ code: 'C',
+ isOverlay: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 13,
+ print: true,
+ jnx: true,
+ shortName: 'topo_1k'
+ }
)
},
{
title: 'GGC 500m',
- shortName: 'ggc_500',
order: 10700,
- isOverlay: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/ggc500/{z}/{x}/{y}",
- {code: 'F', tms: true, scaleDependent: false, maxNativeZoom: 14, print: true, jnx: true}
+ {
+ code: 'F',
+ isOverlay: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 14,
+ print: true,
+ jnx: true,
+ shortName: 'ggc_500'
+ }
)
},
{
title: 'Topo 500m',
- shortName: 'topo_500',
order: 10800,
- isOverlay: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/topo500/{z}/{x}/{y}",
- {code: 'B', tms: true, scaleDependent: false, maxNativeZoom: 14, print: true, jnx: true}
+ {
+ code: 'B',
+ isOverlay: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 14,
+ print: true,
+ jnx: true,
+ shortName: 'topo_500'
+ }
)
},
{
title: 'GGC 250m',
- shortName: 'ggc_250',
order: 10900,
- isOverlay: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/ggc250/{z}/{x}/{y}",
- {code: 'K', tms: true, scaleDependent: false, maxNativeZoom: 15, print: true, jnx: true}
+ {
+ code: 'K',
+ isOverlay: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 15,
+ print: true,
+ jnx: true,
+ shortName: 'ggc_250'
+ }
)
},
{
title: 'Slazav map',
- shortName: 'slazav',
order: 11000,
- isOverlay: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/map_podm/{z}/{x}/{y}",
- {code: 'Z', tms: true, scaleDependent: false, maxNativeZoom: 14, print: true, jnx: true}
+ {
+ code: 'Z',
+ isOverlay: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 14,
+ print: true,
+ jnx: true,
+ shortName: 'slazav'
+ }
)
},
{
title: 'Races',
- shortName: 'races',
order: 11050,
- isOverlay: true,
- isOverlayTransparent: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/adraces/{z}/{x}/{y}",
- {code: 'U', tms: true, scaleDependent: false, maxNativeZoom: 15, print: true, jnx: true}
+ {
+ code: 'U',
+ isOverlay: true,
+ isOverlayTransparent: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 15,
+ print: true,
+ jnx: true,
+ shortName: 'races'
+ }
)
},
{
title: 'O-sport',
- shortName: 'osport',
order: 11100,
- isOverlay: true,
- isOverlayTransparent: true,
isDefault: true,
layer: L.tileLayer("https://tiles.nakarte.tk/osport/{z}/{x}/{y}",
- {code: 'R', tms: true, scaleDependent: false, maxNativeZoom: 17, print: true, jnx: true}
+ {
+ code: 'R',
+ isOverlay: true,
+ isOverlayTransparent: true,
+ tms: true,
+ scaleDependent: false,
+ maxNativeZoom: 17,
+ print: true,
+ jnx: true,
+ shortName: 'osport'
+ }
)
},
{
title: 'Soviet topo maps grid',
- shortName: 'soviet_topo_grid',
order: 11200,
- isOverlay: true,
isDefault: true,
- layer: new L.Layer.SovietTopoGrid({code: 'Ng'})
+ layer: new L.Layer.SovietTopoGrid({
+ code: 'Ng',
+ isOverlay: true,
+ shortName: 'soviet_topo_grid'
+ })
},
{
title: 'Wikimapia',
- shortName: 'wikimapia',
order: 11300,
- isOverlay: true,
isDefault: true,
- layer: new L.Wikimapia({code: 'W'}),
+ layer: new L.Wikimapia({
+ code: 'W',
+ isOverlay: true,
+ shortName: 'wikimapia'
+ })
},
{
title: 'Mountain passes (Westra)',
- shortName: 'westra',
order: 11400,
- isOverlay: true,
- isOverlayTransparent: true,
isDefault: true,
layer: new L.Layer.WestraPasses(config.westraDataBaseUrl, {
code: 'Wp',
+ isOverlay: true,
+ isOverlayTransparent: true,
print: true,
- scaleDependent: true
+ scaleDependent: true,
+ shortName: 'westra'
}
)
},
@@ -282,33 +427,47 @@ export default function getLayers() {
layers: [
{
title: 'OpenTopoMap',
- shortName: 'opentopo',
order: 110,
- isOverlay: false,
isDefault: false,
layer: L.tileLayer('https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png',
- {code: 'Otm', maxNativeZoom: 17, scaleDependent: true, print: true, jnx: true, noCors: false}
+ {
+ code: 'Otm',
+ maxNativeZoom: 17,
+ scaleDependent: true,
+ print: true,
+ jnx: true,
+ noCors: false,
+ shortName: 'opentopo'
+ }
)
},
{
title: 'OpenCycleMap',
- shortName: 'ocm',
description: '<a href="https://www.opencyclemap.org/docs/">(Info and key)</a>',
order: 120,
- isOverlay: false,
isDefault: false,
layer: L.tileLayer('https://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=' + config.thunderforestKey,
- {code: 'Ocm', scaleDependent: true, print: true, jnx: true}
+ {
+ code: 'Ocm',
+ scaleDependent: true,
+ print: true,
+ jnx: true,
+ shortName: 'ocm'
+ }
)
},
{
title: 'OSM Outdoors',
- shortName: 'osm_outdoors',
order: 130,
- isOverlay: false,
isDefault: false,
layer: L.tileLayer('https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=' + config.thunderforestKey,
- {code: 'Oso', scaleDependent: true, print: true, jnx: true}
+ {
+ code: 'Oso',
+ scaleDependent: true,
+ print: true,
+ jnx: true,
+ shortName: 'osm_outdoors'
+ }
)
},
]
@@ -318,54 +477,89 @@ export default function getLayers() {
layers: [
{
title: 'Eurasia 25km',
- shortName: 'eurasia_25k',
description: '1975-80',
order: 10090,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer("https://tiles.nakarte.tk/eurasia25km/{z}/{x}/{y}",
- {code: 'E25m', tms: true, maxNativeZoom: 9, print: true, jnx: true, scaleDependent: false}
+ {
+ code: 'E25m',
+ isOverlay: true,
+ tms: true,
+ maxNativeZoom: 9,
+ print: true,
+ jnx: true,
+ scaleDependent: false,
+ shortName: 'eurasia_25k'
+ }
)
},
{
title: 'Caucasus 1km',
- shortName: 'caucasus_1k',
order: 10610,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer("https://tiles.nakarte.tk/new_gsh_100k/{z}/{x}/{y}",
- {code: 'NT1', tms: true, maxNativeZoom: 14, print: true, jnx: true, scaleDependent: false}
+ {
+ code: 'NT1',
+ isOverlay: true,
+ tms: true,
+ maxNativeZoom: 14,
+ print: true,
+ jnx: true,
+ scaleDependent: false,
+ shortName: 'caucasus_1k'
+ }
)
},
{
title: 'Caucasus 500m',
- shortName: 'caucasus_500',
order: 10810,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer("https://tiles.nakarte.tk/new_gsh_050k/{z}/{x}/{y}",
- {code: 'NT5', tms: true, maxNativeZoom: 15, print: true, jnx: true, scaleDependent: false}
+ {
+ code: 'NT5',
+ isOverlay: true,
+ tms: true,
+ maxNativeZoom: 15,
+ print: true,
+ jnx: true,
+ scaleDependent: false,
+ shortName: 'caucasus_500'
+ }
)
},
{
title: 'Topo 250m',
- shortName: 'topo_250',
order: 10950,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer("https://tiles.nakarte.tk/topo250/{z}/{x}/{y}",
- {code: 'T25', tms: true, maxNativeZoom: 15, print: true, jnx: true, scaleDependent: false}
+ {
+ code: 'T25',
+ isOverlay: true,
+ tms: true,
+ maxNativeZoom: 15,
+ print: true,
+ jnx: true,
+ scaleDependent: false,
+ shortName: 'topo_250'
+ }
)
},
{
title: 'Montenegro topo 250m',
- shortName: 'montenegro_250',
description: '1970-72',
order: 10960,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer("https://tiles.nakarte.tk/montenegro250m/{z}/{x}/{y}",
- {code: 'MN25', tms: true, maxNativeZoom: 15, print: true, jnx: true, scaleDependent: false}
+ {
+ code: 'MN25',
+ isOverlay: true,
+ tms: true,
+ maxNativeZoom: 15,
+ print: true,
+ jnx: true,
+ scaleDependent: false,
+ shortName: 'montenegro_250'
+ }
)
}
]
@@ -375,15 +569,14 @@ export default function getLayers() {
layers: [
{
title: 'Mountains by Aleksey Tsvetkov',
- shortName: 'tsvetkov_mountains',
description: 'Tian Shan, Dzungaria, <a href="http://pereval.g-utka.ru/">http://pereval.g-utka.ru/</a>',
order: 10390,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer("http://map.g-utka.ru/{z}/{x}/{y}.png",
// FIXME: сделать minZoom=5, когда перейдём на версию leaflet с поддержкой minNativeZoom
{
code: 'Mt',
+ isOverlay: true,
tms: false,
minZoom: 7,
minNativeZoom: 7,
@@ -391,7 +584,8 @@ export default function getLayers() {
print: true,
jnx: true,
scaleDependent: false,
- noCors: true
+ noCors: true,
+ shortName: 'tsvetkov_mountains'
}
)
}]
@@ -401,12 +595,11 @@ export default function getLayers() {
layers: [
{
title: 'Bing imagery acquisition dates',
- shortName: 'bind_dates',
order: 11110,
- isOverlay: true,
isDefault: false,
layer: new BingDates({
code: 'Bd',
+ isOverlay: true,
maxNativeZoom: 18,
print: false,
jnx: false,
@@ -416,112 +609,165 @@ export default function getLayers() {
},
{
title: 'geocaching.su',
- shortName: 'geocaching',
order: 11500,
- isOverlay: true,
isDefault: false,
layer: new GeocachingSu(config.geocachingSuUrl, {
code: 'Gc',
+ isOverlay: true,
print: true,
- jnx: false
+ jnx: false,
+ shortName: 'geocaching'
})
},
{
title: 'OpenStreetMap GPS traces',
- shortName: 'osm_gps_traces',
order: 11120,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer('https://{s}.gps-tile.openstreetmap.org/lines/{z}/{x}/{y}.png',
- {code: 'Ot', scaleDependent: true, print: true, jnx: false}
+ {
+ code: 'Ot',
+ isOverlay: true,
+ scaleDependent: true,
+ print: true,
+ jnx: false,
+ shortName: 'osm_gps_traces'
+ }
)
},
{
title: 'Strava heatmap (all)',
- shortName: 'strava',
order: 11130,
- isOverlay: true,
isDefault: false,
layer: new StravaHeatmap('https://heatmap-external-{s}.strava.com/tiles-auth/all/hot/{z}/{x}/{y}.png?px=256',
- {code: 'Sa', scaleDependent: true, print: false, jnx: false, subdomains: 'abc',
- maxNativeZoom: 16, noCors: true}
+ {
+ code: 'Sa',
+ isOverlay: true,
+ scaleDependent: true,
+ print: false,
+ jnx: false,
+ subdomains: 'abc',
+ maxNativeZoom: 16,
+ noCors: true
+ }
)
},
{
title: 'Strava heatmap (run)',
- shortName: 'strava_run',
order: 11131,
- isOverlay: true,
isDefault: false,
layer: new StravaHeatmap('https://heatmap-external-{s}.strava.com/tiles-auth/run/hot/{z}/{x}/{y}.png?px=256',
- {code: 'Sr', scaleDependent: true, print: false, jnx: false, subdomains: 'abc',
- maxNativeZoom: 16, noCors: true}
+ {
+ code: 'Sr',
+ isOverlay: true,
+ scaleDependent: true,
+ print: false,
+ jnx: false,
+ subdomains: 'abc',
+ maxNativeZoom: 16,
+ noCors: true
+ }
)
},
{
title: 'Strava heatmap (ride)',
- shortName: 'strava_ride',
order: 11132,
- isOverlay: true,
isDefault: false,
layer: new StravaHeatmap('https://heatmap-external-{s}.strava.com/tiles-auth/ride/hot/{z}/{x}/{y}.png?px=256',
- {code: 'Sb', scaleDependent: true, print: false, jnx: false, subdomains: 'abc',
- maxNativeZoom: 16, noCors: true}
+ {
+ code: 'Sb',
+ isOverlay: true,
+ scaleDependent: true,
+ print: false,
+ jnx: false,
+ subdomains: 'abc',
+ maxNativeZoom: 16,
+ noCors: true
+ }
)
},
{
title: 'Strava heatmap (winter)',
- shortName: 'strava_winter',
order: 11133,
- isOverlay: true,
isDefault: false,
layer: new StravaHeatmap('https://heatmap-external-{s}.strava.com/tiles-auth/winter/hot/{z}/{x}/{y}.png?px=256',
- {code: 'Sw', scaleDependent: true, print: false, jnx: false, subdomains: 'abc',
- maxNativeZoom: 16, noCors: true}
+ {
+ code: 'Sw',
+ isOverlay: true,
+ scaleDependent: true,
+ print: false,
+ jnx: false,
+ subdomains: 'abc',
+ maxNativeZoom: 16,
+ noCors: true
+ }
)
},
{
title: 'Strava heatmap lowres (all)',
- shortName: 'strava_lowres',
order: 11134,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer('https://heatmap-external-{s}.strava.com/tiles/all/hot/{z}/{x}/{y}.png?px=256',
- {code: 'Sal', scaleDependent: true, print: false, jnx: false, subdomains: 'abc',
- maxNativeZoom: 12, noCors: true}
+ {
+ code: 'Sal',
+ isOverlay: true,
+ scaleDependent: true,
+ print: false,
+ jnx: false,
+ subdomains: 'abc',
+ maxNativeZoom: 12,
+ noCors: true
+ }
)
},
{
title: 'Strava heatmap lowres (run)',
- shortName: 'strava_lowres_run',
order: 11135,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer('https://heatmap-external-{s}.strava.com/tiles/run/hot/{z}/{x}/{y}.png?px=256',
- {code: 'Srl', scaleDependent: true, print: false, jnx: false, subdomains: 'abc',
- maxNativeZoom: 12, noCors: true}
+ {
+ code: 'Srl',
+ isOverlay: true,
+ scaleDependent: true,
+ print: false,
+ jnx: false,
+ subdomains: 'abc',
+ maxNativeZoom: 12,
+ noCors: true
+ }
)
},
{
title: 'Strava heatmap lowres (ride)',
- shortName: 'strava_lowres_ride',
order: 11136,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer('https://heatmap-external-{s}.strava.com/tiles/ride/hot/{z}/{x}/{y}.png?px=256',
- {code: 'Sbl', scaleDependent: true, print: false, jnx: false, subdomains: 'abc',
- maxNativeZoom: 12, noCors: true}
+ {
+ code: 'Sbl',
+ isOverlay: true,
+ scaleDependent: true,
+ print: false,
+ jnx: false,
+ subdomains: 'abc',
+ maxNativeZoom: 12,
+ noCors: true
+ }
)
},
{
title: 'Strava heatmap lowres (winter)',
- shortName: 'strava_lowres_winter',
order: 11137,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer('https://heatmap-external-{s}.strava.com/tiles/winter/hot/{z}/{x}/{y}.png?px=256',
- {code: 'Swl', scaleDependent: true, print: false, jnx: false, subdomains: 'abc',
- maxNativeZoom: 12, noCors: true}
+ {
+ code: 'Swl',
+ isOverlay: true,
+ scaleDependent: true,
+ print: false,
+ jnx: false,
+ subdomains: 'abc',
+ maxNativeZoom: 12,
+ noCors: true
+ }
)
},
]
@@ -533,64 +779,104 @@ export default function getLayers() {
{
// Вместо 404 отдают 500 для отсутствующих тайлов
title: 'Norway UT map',
- shortName: 'norway_ut',
order: 5000,
- isOverlay: false,
isDefault: false,
layer: L.tileLayer("https://tilesprod.ut.no/tilestache/ut_topo_light/{z}/{x}/{y}.jpg",
- {code: 'Nu', tms: false, maxNativeZoom: 16, print: true, jnx: true, scaleDependent: true, noCors: false}
+ {
+ code: 'Nu',
+ tms: false,
+ maxNativeZoom: 16,
+ print: true,
+ jnx: true,
+ scaleDependent: true,
+ noCors: false,
+ shortName: 'norway_ut'
+ }
)
},
{
title: 'Norway paper map',
- shortName: 'norway_paper',
order: 10310,
- isOverlay: true,
isDefault: false,
layer: new L.TileLayer.Nordeskart('https://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache_gmaps?layers=toporaster3&zoom={z}&x={x}&y={y}&gkt={baatToken}',
- {code: 'Np', maxNativeZoom: 16, tms: false, print: true, jnx: true, scaleDependent: true}
+ {
+ code: 'Np',
+ isOverlay: true,
+ maxNativeZoom: 16,
+ tms: false,
+ print: true,
+ jnx: true,
+ scaleDependent: true,
+ shortName: 'norway_paper'
+ }
)
},
{
title: 'Norway map',
- shortName: 'norway',
order: 10320,
- isOverlay: true,
isDefault: false,
layer: new L.TileLayer.Nordeskart('https://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache_gmaps?layers=topo4&zoom={z}&x={x}&y={y}&gkt={baatToken}',
- {code: 'Nm', tms: false, print: true, jnx: true, scaleDependent: true}
+ {
+ code: 'Nm',
+ isOverlay: true,
+ tms: false,
+ print: true,
+ jnx: true,
+ scaleDependent: true,
+ shortName: 'norway'
+ }
)
},
{
title: 'Norway summer trails',
- shortName: 'norway_summer',
order: 20000,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer("https://tilesprod.ut.no/tilestache/dnt_sommer/{z}/{x}/{y}.png",
- {code: 'Ns', tms: false, print: true, jnx: true, scaleDependent: true, noCors: false}
+ {
+ code: 'Ns',
+ isOverlay: true,
+ tms: false,
+ print: true,
+ jnx: true,
+ scaleDependent: true,
+ noCors: false,
+ shortName: 'norway_summer'
+ }
)
},
{
title: 'Norway winter trails',
- shortName: 'norway_winter',
order: 20010,
- isOverlay: true,
isDefault: false,
layer: L.tileLayer("https://tilesprod.ut.no/tilestache/dnt_vinter/{z}/{x}/{y}.png",
- {code: 'Nw', tms: false, print: true, jnx: true, scaleDependent: true, noCors: false}
+ {
+ code: 'Nw',
+ isOverlay: true,
+ tms: false,
+ print: true,
+ jnx: true,
+ scaleDependent: true,
+ noCors: false,
+ shortName: 'norway_winter'
+ }
)
},
{
// Вместо 404 отдают 500 для отсутствующих тайлов
title: 'Norway roads',
- shortName: 'norway_roads',
description: '<a href="https://kart.finn.no/">https://kart.finn.no/</a>',
order: 5030,
- isOverlay: false,
isDefault: false,
layer: L.tileLayer("https://maptiles1.finncdn.no/tileService/1.0.3/normap/{z}/{x}/{y}.png",
- {code: 'Nr', tms: false, print: true, jnx: true, scaleDependent: true, noCors: true}
+ {
+ code: 'Nr',
+ tms: false,
+ print: true,
+ jnx: true,
+ scaleDependent: true,
+ noCors: true,
+ shortName: 'norway_roads'
+ }
)
}]
},
@@ -599,52 +885,82 @@ export default function getLayers() {
layers: [
{
title: 'Czech base',
- shortName: 'czech',
order: 5040,
- isOverlay: false,
isDefault: false,
layer: L.tileLayer("https://m{s}.mapserver.mapy.cz/base-m/{z}-{x}-{y}",
- {code: 'Czb', tms: false, print: true, jnx: true, subdomains: '1234', scaleDependent: true}
+ {
+ code: 'Czb',
+ tms: false,
+ print: true,
+ jnx: true,
+ subdomains: '1234',
+ scaleDependent: true,
+ shortName: 'czech'
+ }
)
},
{
title: 'Czech tourist',
- shortName: 'czech_tourist',
order: 5050,
- isOverlay: false,
isDefault: false,
layer: L.tileLayer("https://m{s}.mapserver.mapy.cz/turist-m/{z}-{x}-{y}",
- {code: 'Czt', tms: false, print: true, jnx: true, subdomains: '1234', scaleDependent: true}
+ {
+ code: 'Czt',
+ tms: false,
+ print: true,
+ jnx: true,
+ subdomains: '1234',
+ scaleDependent: true,
+ shortName: 'czech_tourist'
+ }
)
},
{
title: 'Czech summer',
- shortName: 'czech_summer',
order: 5060,
- isOverlay: false,
isDefault: false,
layer: L.tileLayer("https://m{s}.mapserver.mapy.cz/turist_aquatic-m/{z}-{x}-{y}",
- {code: 'Czs', tms: false, print: true, jnx: true, subdomains: '1234', scaleDependent: true}
+ {
+ code: 'Czs',
+ tms: false,
+ print: true,
+ jnx: true,
+ subdomains: '1234',
+ scaleDependent: true,
+ shortName: 'czech_summer'
+ }
)
},
{
title: 'Czech winter',
- shortName: 'czech_winter',
order: 5070,
- isOverlay: false,
isDefault: false,
layer: L.tileLayer("https://m{s}.mapserver.mapy.cz/winter-m/{z}-{x}-{y}",
- {code: 'Czw', tms: false, print: true, jnx: true, subdomains: '1234', scaleDependent: true}
+ {
+ code: 'Czw',
+ tms: false,
+ print: true,
+ jnx: true,
+ subdomains: '1234',
+ scaleDependent: true,
+ shortName: 'czech_winter'
+ }
)
},
{
title: 'Czech geographical',
- shortName: 'czech_geo',
order: 5080,
- isOverlay: false,
isDefault: false,
layer: L.tileLayer("https://m{s}.mapserver.mapy.cz/zemepis-m/{z}-{x}-{y}",
- {code: 'Czg', tms: false, print: true, jnx: true, subdomains: '1234', scaleDependent: true}
+ {
+ code: 'Czg',
+ tms: false,
+ print: true,
+ jnx: true,
+ subdomains: '1234',
+ scaleDependent: true,
+ shortName: 'czech_geo'
+ }
)
}]
}
@@ -655,10 +971,15 @@ export default function getLayers() {
const shortNames = new Set();
for (let group of layers) {
for (let layer of group.layers) {
- if (!layer.layer.options) {
+ const { layer: { options } } = layer
+ if (!options) {
throw new Error('Layer without options: ' + layer.title);
}
- let code = layer.layer.options.code;
+ const {
+ code,
+ shortName,
+ print
+ } = options
if (!code) {
throw new Error('Layer without code: ' + layer.title);
}
@@ -674,14 +995,16 @@ export default function getLayers() {
throw new Error(`Duplicate layer order "${order}"`);
}
orders[order] = 1;
- let shortName = layer.shortName;
- if (!shortName) {
- throw new Error('Layer without shortName: ' + layer.title);
- }
- if (shortNames.has(shortName)) {
- throw new Error(`Duplicate layer shortName "${shortName}"`);
+
+ if (print) {
+ if (!shortName) {
+ throw new Error('Layer without shortName: ' + layer.title);
+ }
+ if (shortNames.has(shortName)) {
+ throw new Error(`Duplicate layer shortName "${shortName}"`);
+ }
+ shortNames.add(shortName);
}
- shortNames.add(shortName);
}
}
return layers;
diff --git a/src/lib/leaflet.control.layers.configure/index.js b/src/lib/leaflet.control.layers.configure/index.js
@@ -178,7 +178,6 @@ function enableConfig(control, layers) {
url: '',
tms: false,
maxZoom: 18,
- isOverlay: false,
scaleDependent: false
}
);
@@ -194,8 +193,9 @@ function enableConfig(control, layers) {
enabledLayers.sort((l1, l2) => l1.order - l2.order);
enabledLayers.forEach((l) => {
l.layer._justAdded = addedLayers && addedLayers.includes(l);
- l.isOverlay ? this.addOverlay(l.layer, l.title) : this.addBaseLayer(l.layer, l.title);
- if (!l.isOverlay && this._map.hasLayer(l.layer)) {
+ const { layer: { options: { isOverlay } } } = l
+ isOverlay ? this.addOverlay(l.layer, l.title) : this.addBaseLayer(l.layer, l.title);
+ if (!isOverlay && this._map.hasLayer(l.layer)) {
hasBaselayerOnMap = true;
}
}
@@ -203,7 +203,7 @@ function enableConfig(control, layers) {
// если нет активного базового слоя, включить первый, если он есть
if (!hasBaselayerOnMap) {
for (let layer of enabledLayers) {
- if (!layer.isOverlay) {
+ if (!layer.layer.options.isOverlay) {
this._map.addLayer(layer.layer);
break;
}
@@ -395,6 +395,7 @@ ${buttonsHtml}`;
createCustomLayer: function(fieldValues) {
const serialized = this.serializeCustomLayer(fieldValues);
const tileLayer = L.tileLayer(fieldValues.url, {
+ isOverlay: fieldValues.isOverlay,
tms: fieldValues.tms,
maxNativeZoom: fieldValues.maxZoom,
scaleDependent: fieldValues.scaleDependent,
@@ -407,7 +408,6 @@ ${buttonsHtml}`;
const customLayer = {
title: fieldValues.name,
- isOverlay: fieldValues.isOverlay,
isDefault: false,
isCustom: true,
serialized: serialized,
@@ -464,7 +464,7 @@ ${buttonsHtml}`;
const newLayer = this.createCustomLayer(newFieldValues);
this._customLayers.splice(layerPos, 0, newLayer);
- if (this._map.hasLayer(layer.layer) && (!layer.isOverlay || newLayer.isOverlay)) {
+ if (this._map.hasLayer(layer.layer) && (!layer.layer.options.isOverlay || newLayer.layer.options.isOverlay)) {
this._map.addLayer(newLayer.layer);
}
this._map.removeLayer(layer.layer);
@@ -510,4 +510,4 @@ ${buttonsHtml}`;
}
-export default enableConfig;
-\ No newline at end of file
+export default enableConfig;
diff --git a/src/lib/leaflet.control.printPages/control.js b/src/lib/leaflet.control.printPages/control.js
@@ -17,7 +17,6 @@ import logging from 'lib/logging';
import {MagneticMeridians} from './decoration.magnetic-meridians';
import {OverlayScale} from './decoration.scale';
import {Grid} from './decoration.grid';
-import getLayers from 'layers';
ko.extenders.checkNumberRange = function(target, range) {
return ko.pureComputed({
@@ -226,10 +225,10 @@ L.Control.PrintPages = L.Control.extend({
decorationLayers,
progressCallback: this.incrementProgress.bind(this)
}
- ).then(({images, renderedLayerCodes}) => {
+ ).then(({images, renderedLayers}) => {
if (images) {
const fileName = this.getFileName({
- renderedLayerCodes,
+ renderedLayers,
extension: 'pdf'
});
savePagesPdf(images, resolution, fileName);
@@ -270,9 +269,9 @@ L.Control.PrintPages = L.Control.extend({
progressCallback: this.incrementProgress.bind(this)
}
)
- .then(({images, renderedLayerCodes}) => {
+ .then(({images, renderedLayers}) => {
const fileName = this.getFileName({
- renderedLayerCodes,
+ renderedLayers,
extension: 'jpg'
});
savePageJpg(images[0], fileName);
@@ -474,40 +473,34 @@ L.Control.PrintPages = L.Control.extend({
return true;
},
- getFileName: function({renderedLayerCodes, extension}) {
+ getFileName: function({renderedLayers, extension}) {
let fileName = '';
const baseLayers = [];
const overlayLayers = [];
const transparentOverlayLayers = [];
- getLayers().forEach(({ layers: layerGroup }) => {
- layerGroup.forEach((layer) => {
- if (renderedLayerCodes.has(layer.layer.options.code)) {
- if (layer.isOverlay) {
- if (layer.isOverlayTransparent) {
- transparentOverlayLayers.push(layer);
- } else {
- overlayLayers.push(layer);
- }
- } else {
- baseLayers.push(layer);
- }
+ renderedLayers.forEach(layer => {
+ const {
+ options: {
+ isOverlay,
+ isOverlayTransparent
}
- });
- });
+ } = layer;
- const compare = (layer1, layer2) => {
- if (layer1.order < layer2.order) return 1;
- if (layer1.order > layer2.order) return -1;
- return 0;
- }
- baseLayers.sort(compare);
- overlayLayers.sort(compare);
- transparentOverlayLayers.sort(compare);
+ if (isOverlay) {
+ if (isOverlayTransparent) {
+ transparentOverlayLayers.unshift(layer);
+ } else {
+ overlayLayers.unshift(layer);
+ }
+ } else {
+ baseLayers.unshift(layer);
+ }
+ });
const appendLayerShortName = (layer) => {
- fileName += `${layer.shortName}_`;
+ fileName += `${layer.options.shortName}_`;
}
if (overlayLayers.length > 0) {
appendLayerShortName(overlayLayers[0]);
@@ -522,7 +515,7 @@ L.Control.PrintPages = L.Control.extend({
const height = this.pageHeight();
const currentPageSize = this.pageSizes.find((pageSize) => {
- return (width == pageSize.width) && (height == pageSize.height);
+ return (width === pageSize.width) && (height === pageSize.height);
});
if (currentPageSize) {
diff --git a/src/lib/leaflet.control.printPages/map-render.js b/src/lib/leaflet.control.printPages/map-render.js
@@ -185,7 +185,6 @@ async function* iterateLayersTiles(layers, latLngBounds, destPixelSize, resoluti
};
let doStop;
for (let layer of layers) {
- const layerCode = layer.options && layer.options.code;
let zoom;
if (layer.options && layer.options.scaleDependent) {
zoom = zooms.mapZoom;
@@ -218,7 +217,7 @@ async function* iterateLayersTiles(layers, latLngBounds, destPixelSize, resoluti
layerPromises.push(tilePromise.tilePromise);
let progressInc = (layer._printProgressWeight || 1) / count;
tilePromise.tilePromise =
- tilePromise.tilePromise.then((tileInfo) => Object.assign({zoom, progressInc, layerCode}, tileInfo));
+ tilePromise.tilePromise.then((tileInfo) => Object.assign({zoom, progressInc, layer}, tileInfo));
doStop = yield tilePromise;
if (doStop) {
tilePromise.abortLoading();
@@ -277,7 +276,7 @@ async function renderPages({map, pages, zooms, resolution, scale, progressCallba
}
progressRange *= pages.length;
const pageImagesInfo = [];
- const renderedLayerCodes = new Set();
+ const renderedLayers = new Set();
for (let page of pages) {
let destPixelSize = page.printSize.multiplyBy(resolution / 25.4).round();
let pixelBounds = L.bounds(
@@ -304,7 +303,7 @@ async function renderPages({map, pages, zooms, resolution, scale, progressCallba
progressCallback(tileInfo.progressInc, progressRange);
composer.putTile(tileInfo);
if (tileInfo.image) {
- renderedLayerCodes.add(tileInfo.layerCode);
+ renderedLayers.add(tileInfo.layer);
}
}
const dataUrl = composer.getDataUrl();
@@ -317,7 +316,7 @@ async function renderPages({map, pages, zooms, resolution, scale, progressCallba
}
);
}
- return { images: pageImagesInfo, renderedLayerCodes };
+ return { images: pageImagesInfo, renderedLayers };
}