This commit is contained in:
parent
230dddbfd6
commit
ea82f02f51
1 changed files with 46 additions and 25 deletions
|
@ -197,9 +197,18 @@ export class GisafMapboxComponent implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
_getNewSingleOpacity(layerId: string, originalOpacity: number | object): number | object {
|
_getNewSingleOpacity(layerId: string, originalOpacity: number | object): number | object {
|
||||||
if (typeof (originalOpacity) === 'number') {
|
if (originalOpacity === undefined) {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
else if (typeof originalOpacity === 'number') {
|
||||||
return originalOpacity * this._baseStyleOpacity
|
return originalOpacity * this._baseStyleOpacity
|
||||||
}
|
}
|
||||||
|
else if (typeof originalOpacity === 'object') { // Also matches array
|
||||||
|
if (originalOpacity[0] == 'interpolate') {
|
||||||
|
// Change the last interpolation point
|
||||||
|
originalOpacity[Object.values(originalOpacity).length - 1] = this._baseStyleOpacity
|
||||||
|
return originalOpacity
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
let newOpacity = {}
|
let newOpacity = {}
|
||||||
for (const k in originalOpacity) {
|
for (const k in originalOpacity) {
|
||||||
|
@ -214,30 +223,40 @@ export class GisafMapboxComponent implements OnInit, OnDestroy {
|
||||||
return newOpacity
|
return newOpacity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
console.log(`Cannot process opacity of layer ${layerId}, unknown type ${typeof originalOpacity}`)
|
||||||
|
return originalOpacity
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_getNewOpacity(layer: object): object {
|
_getNewOpacity(layer: object): object {
|
||||||
let originalStyle = this.originalBaseStyle.style['layers'].find(
|
let originalStyle = this.originalBaseStyle.style['layers'].find(
|
||||||
(_layer: object) => layer['id'] == _layer['id']
|
(_layer: object) => layer['id'] == _layer['id']
|
||||||
)
|
)
|
||||||
if (!('paint' in originalStyle)) {
|
let originalPaint = originalStyle['paint'] || {}
|
||||||
originalStyle['paint'] = {}
|
if (layer['type'] == 'symbol') {
|
||||||
}
|
|
||||||
if (['raster', 'background', 'fill', 'line'].indexOf(layer['type']) != -1) {
|
|
||||||
let prop = layer['type'] + '-opacity'
|
|
||||||
return {
|
|
||||||
[prop]: this._getNewSingleOpacity(layer['id'], originalStyle['paint'][prop] || 1.0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
let prop1 = 'text-opacity'
|
let prop1 = 'text-opacity'
|
||||||
let prop2 = 'icon-opacity'
|
let prop2 = 'icon-opacity'
|
||||||
let newOpacity1 = this._getNewSingleOpacity(layer['id'], originalStyle['paint'][prop1] || 1.0)
|
let newOpacity1 = this._getNewSingleOpacity(layer['id'], originalPaint[prop1] || 1.0)
|
||||||
let newOpacity2 = this._getNewSingleOpacity(layer['id'], originalStyle['paint'][prop2] || 1.0)
|
let newOpacity2 = this._getNewSingleOpacity(layer['id'], originalPaint[prop2] || 1.0)
|
||||||
return {
|
return {
|
||||||
[prop1]: newOpacity1,
|
[prop1]: newOpacity1,
|
||||||
[prop2]: newOpacity2,
|
[prop2]: newOpacity2,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (layer['type'] == 'line') {
|
||||||
|
let prop = layer['type'] + '-opacity'
|
||||||
|
return {
|
||||||
|
[prop]: this._getNewSingleOpacity(layer['id'], originalPaint[prop] || 1.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// layer['type'] in ['raster', 'background', 'fill', 'line', 'fill-extrusion']
|
||||||
|
let prop = layer['type'] + '-opacity'
|
||||||
|
return {
|
||||||
|
[prop]: this._getNewSingleOpacity(layer['id'], originalPaint[prop] || 1.0),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
applyBaseStyleOpacity() {
|
applyBaseStyleOpacity() {
|
||||||
|
@ -247,10 +266,12 @@ export class GisafMapboxComponent implements OnInit, OnDestroy {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for (const [key, value] of Object.entries(this._getNewOpacity(bsLayer))) {
|
for (const [key, value] of Object.entries(this._getNewOpacity(bsLayer))) {
|
||||||
|
if (value !== undefined) {
|
||||||
this.map.setPaintProperty(bsLayer.id, key, value)
|
this.map.setPaintProperty(bsLayer.id, key, value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For reference:
|
* For reference:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue