Fix dynamically selecting the popup when changing the hash
This commit is contained in:
parent
162ab325f9
commit
df92bda151
2 changed files with 18 additions and 10 deletions
|
@ -90,12 +90,12 @@ export default class SelectedFeatureHandler {
|
||||||
if (feature === undefined) {
|
if (feature === undefined) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const currentlySeleced = state.selectedElement.data
|
const currentlySelected = state.selectedElement.data
|
||||||
if (currentlySeleced === undefined) {
|
if (currentlySelected === undefined) {
|
||||||
state.selectedElement.setData(feature)
|
state.selectedElement.setData(feature)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (currentlySeleced.properties?.id === feature.properties.id) {
|
if (currentlySelected.properties?.id === feature.properties.id) {
|
||||||
// We already have the right feature
|
// We already have the right feature
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,7 +136,7 @@ export default class ShowDataLayerImplementation {
|
||||||
if (this._leafletMap.data === undefined) {
|
if (this._leafletMap.data === undefined) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const v = this.leafletLayersPerId.get(selected.properties.id + selected.geometry.type)
|
const v = this.leafletLayersPerId.get(selected.properties.id)
|
||||||
if (v === undefined) {
|
if (v === undefined) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -335,7 +335,20 @@ export default class ShowDataLayerImplementation {
|
||||||
icon: L.divIcon(style),
|
icon: L.divIcon(style),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a function which, for the given feature, will open the featureInfoBox (and lazyly create it)
|
||||||
|
* This function is cached
|
||||||
|
* @param feature
|
||||||
|
* @param key
|
||||||
|
* @param layer
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
private createActivateFunction(feature, key: string, layer: LayerConfig): (event) => void {
|
private createActivateFunction(feature, key: string, layer: LayerConfig): (event) => void {
|
||||||
|
if (this.leafletLayersPerId.has(key)) {
|
||||||
|
return this.leafletLayersPerId.get(key).activateFunc
|
||||||
|
}
|
||||||
|
|
||||||
let infobox: ScrollableFullScreen = undefined
|
let infobox: ScrollableFullScreen = undefined
|
||||||
const self = this
|
const self = this
|
||||||
|
|
||||||
|
@ -373,12 +386,7 @@ export default class ShowDataLayerImplementation {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const key = feature.properties.id
|
const key = feature.properties.id
|
||||||
let activate: (event) => void
|
const activate = this.createActivateFunction(feature, key, layer)
|
||||||
if (this.leafletLayersPerId.has(key)) {
|
|
||||||
activate = this.leafletLayersPerId.get(key).activateFunc
|
|
||||||
} else {
|
|
||||||
activate = this.createActivateFunction(feature, key, layer)
|
|
||||||
}
|
|
||||||
|
|
||||||
// We also have to open on rightclick, doubleclick, ... as users sometimes do this. See #1219
|
// We also have to open on rightclick, doubleclick, ... as users sometimes do this. See #1219
|
||||||
leafletLayer.on({
|
leafletLayer.on({
|
||||||
|
|
Loading…
Reference in a new issue