The leaflet map (image map in CRS Simple) was created using QGIS2WEB and I am trying to display the content of pop-up at a constant position (top-corner), opening when hovered over a polygon by the function highlightFeature.
The popup Content should appear into a Custom Info Control, as explain here (https://leafletjs.com/examples/choropleth/). I don't understand (perpetual newbie here) how to write the var popupContent into the props function.
The Pop-up text is based on infos contained in a CSS file and returned through this lines
var popupContent = '<table>\ <tr>\ <th scope="row">\ <td>' + (feature.properties['Themen'] !== null ? autolinker.link(feature.properties['Themen'].toLocaleString()) : '') + '</td>\ </tr>\ <tr>\ <th scope="row">\ <td>' + (feature.properties['Description'] !== null ? autolinker.link(feature.properties['Description'].toLocaleString()) : '') + '</td>\ </tr>\ </table>'; This is what I want to integrate into the QGIS2web export
var info = L.control(); info.onAdd = function (map) { this._div = L.DomUtil.create('div', 'info'); // create a div with a class "info" this.update(); return this._div; }; // method that we will use to update the control based on feature properties passed info.update = function (props) { this._div.innerHTML = '<h4>US Population Density</h4>' + (props ? '<b>' + props.name + '</b><br />' + props.density + ' people / mi<sup>2</sup>' : 'Hover over a state'); }; info.addTo(map); Here is the full code of the QGIS2web html export
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="initial-scale=1,user-scalable=no,maximum-scale=1,width=device-width"> <meta name="mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes"> <link rel="stylesheet" href="css/leaflet.css"> <link rel="stylesheet" href="css/qgis2web.css"><link rel="stylesheet" href="css/fontawesome-all.min.css"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <style> html, body, #map { width: 100%; height: 100%; padding: 0px; margin: 10px; } #map { width: 1000px; height: 700px; } </style> <title></title> </head> <body> <div id="map"> </div> <script src="js/qgis2web_expressions.js"></script> <script src="js/leaflet.js"></script> <script src="js/leaflet.rotatedMarker.js"></script> <script src="js/leaflet.pattern.js"></script> <script src="js/leaflet-hash.js"></script> <script src="js/Autolinker.min.js"></script> <script src="js/rbush.min.js"></script> <script src="js/labelgun.min.js"></script> <script src="js/labels.js"></script> <script src="data/TZ_Feldarbeiten_buffer_1.js"></script> <script> var highlightLayer; function highlightFeature(e) { highlightLayer = e.target; highlightLayer.openPopup(); } var map = L.map('map', { crs: L.CRS.Simple, zoomControl:true, maxZoom:3, minZoom:-2 }).fitBounds([[0,0],[-2327.0,3295.0]]) .setView([0, 0]);; var bounds = L.latLngBounds([[0.0, 3295.0], [-2327.0,0]]); map.setMaxBounds(bounds); map.on('drag', function() { map.panInsideBounds(bounds, { animate: false }); }); var hash = new L.Hash(map); //map.attributionControl.setPrefix('<a href="https://github.com/tomchadwin/qgis2web" target="_blank">qgis2web</a> · <a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a> · <a href="https://qgis.org">QGIS</a>'); var autolinker = new Autolinker({truncate: {length: 30, location: 'smart'}}); var bounds_group = new L.featureGroup([]); function setBounds() { if (bounds_group.getLayers().length) { map.fitBounds(bounds_group.getBounds()); } } map.createPane('pane_Wimmelbild_Interactiv4_nolabel_0'); map.getPane('pane_Wimmelbild_Interactiv4_nolabel_0').style.zIndex = 400; var img_Wimmelbild_Interactiv4_nolabel_0 = 'data/Wimmelbild_Interactiv4_nolabel_0.png'; var img_bounds_Wimmelbild_Interactiv4_nolabel_0 = [[0.0,0.0],[-2327.0,3295.0]]; var layer_Wimmelbild_Interactiv4_nolabel_0 = new L.imageOverlay(img_Wimmelbild_Interactiv4_nolabel_0, img_bounds_Wimmelbild_Interactiv4_nolabel_0, {pane: 'pane_Wimmelbild_Interactiv4_nolabel_0'}); bounds_group.addLayer(layer_Wimmelbild_Interactiv4_nolabel_0); map.addLayer(layer_Wimmelbild_Interactiv4_nolabel_0); function pop_TZ_Feldarbeiten_buffer_1(feature, layer) { layer.on({ mouseout: function(e) { if (typeof layer.closePopup == 'function') { layer.closePopup(); } else { layer.eachLayer(function(feature){ feature.closePopup() }); } }, mouseover: highlightFeature, }); var popupContent = '<table>\ <tr>\ <th scope="row">\ <td>' + (feature.properties['Themen'] !== null ? autolinker.link(feature.properties['Themen'].toLocaleString()) : '') + '</td>\ </tr>\ <tr>\ <th scope="row"><strong></strong>\ <td>' + (feature.properties['Descriptio'] !== null ? autolinker.link(feature.properties['Descriptio'].toLocaleString()) : '') + '</td>\ </tr>\ </table>'; layer.bindPopup(popupContent, {maxHeight: 200, closeButton: false}).openPopup(); } function style_TZ_Feldarbeiten_buffer_1_0() { return { pane: 'pane_TZ_Feldarbeiten_buffer_1', opacity: 1, color: 'rgba(35,35,35,1.0)', dashArray: '', lineCap: 'butt', lineJoin: 'miter', weight: 1.0, fill: true, fillOpacity: 1, fillColor: 'rgba(229,182,54,1.0)', interactive: true, } } map.createPane('pane_TZ_Feldarbeiten_buffer_1'); map.getPane('pane_TZ_Feldarbeiten_buffer_1').style.zIndex = 401; map.getPane('pane_TZ_Feldarbeiten_buffer_1').style['mix-blend-mode'] = 'normal'; var layer_TZ_Feldarbeiten_buffer_1 = new L.geoJson(json_TZ_Feldarbeiten_buffer_1, { attribution: '', interactive: true, dataVar: 'json_TZ_Feldarbeiten_buffer_1', layerName: 'layer_TZ_Feldarbeiten_buffer_1', pane: 'pane_TZ_Feldarbeiten_buffer_1', onEachFeature: pop_TZ_Feldarbeiten_buffer_1, style: style_TZ_Feldarbeiten_buffer_1_0, }); bounds_group.addLayer(layer_TZ_Feldarbeiten_buffer_1); map.addLayer(layer_TZ_Feldarbeiten_buffer_1); var title = new L.Control(); title.onAdd = function (map) { this._div = L.DomUtil.create('div', 'info'); this.update(); return this._div; }; title.update = function () { this._div.innerHTML = '<h2>Die Entwicklungszusammenarbeit</h2>'; }; title.addTo(map); var baseMaps = {}; L.control.layers(baseMaps,{'<img src="legend/TZ_Feldarbeiten_buffer_1.png" /> TZ_Feldarbeiten_buffer': layer_TZ_Feldarbeiten_buffer_1,"Wimmelbild_Interactiv4_nolabel": layer_Wimmelbild_Interactiv4_nolabel_0,}).addTo(map); setBounds(); L.ImageOverlay.include({ getBounds: function () { return this._bounds; } }); </script> </body> </html> How should it be written?