/**
### mapp.layer.featureHover()
@module /layer/featureHover
*/
export default function (feature, layer) {
// The hover method must only execute if the display flag is set.
if (!layer.style.hover.display) return;
// Store current highlight (feature) key.
const featureKey = layer.mapview.interaction?.current?.key?.toString()
if (!featureKey) return;
const paramString = mapp.utils.paramString({
locale: layer.mapview.locale.key,
layer: layer.Key || layer.key,
filter: feature.properties.count > 1 && layer.filter?.current,
template: layer.style.hover.query || 'infotip',
qID: layer.qID,
id: feature.properties.id,
table: layer.tableCurrent(),
geom: layer.geom,
field: layer.style.hover.field,
coords: feature.properties.count > 1
&& ol.proj.transform(
feature.getGeometry().getCoordinates(),
`EPSG:${layer.mapview.srid}`,
`EPSG:${layer.srid}`)
})
mapp.utils.xhr(`${layer.mapview.host}/api/query?${paramString}`)
.then(response => {
// Check whether there is a response to display.
if (!response) return;
if (typeof layer.style.hover.render === 'function') {
const content = layer.style.hover.render(response)
layer.mapview.infotip(content)
return;
}
// Check whether the response label field has a value.
if (response.label == '') return;
// Check whether highlight feature is still current.
if (layer.mapview.interaction?.current?.key !== featureKey) return;
// Display the response label as infotip.
layer.mapview.infotip(response.label)
})
}