<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Tutorial: Leaflet mit ActiveMap erweitern</title> <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" /> <script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script> <link rel="stylesheet" href="http://support.activemapjs.de/cdn/activemap.css" /> <script src="http://support.activemapjs.de/cdn/activemap.js"></script> </head> <body> <!--Leaflet-Kartenbereich--> <div id="mapid" style="position:absolute; left:1%; top:1%; width:98%; height:90%"></div> <!--Feld f�r Maus-Over-Meldungen--> <div> <span id="statustext" style="position:absolute; left:1%; top:91%; width:98%; height:5%"></span> </div> <script> // Leaflet-Karte laden var mymap = L.map('mapid').setView([51.5, 10], 6); // Stra�enkarte als Hintergrund laden... var tileLayer = L.tileLayer('http://sg.geodatenzentrum.de/wmts_topplus_web_open/tile/1.0.0/web/default/WEBMERCATOR/{z}/{y}/{x}.png', { attribution: '� Bundesamt f�r Kartographie und Geod�sie 2017, Datenquellen: http://sg.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf', maxZoom: 18, id: 'topplus' }); // ... und der Karte hinzuf�gen tileLayer.addTo(mymap); // Interaktive ActiveMap Gebietsebene laden... var lal = AM.Leaflet.leafletAreaLayer({ url: "http://support.activemapjs.de/vt/kreise/{z}/{x}_{y}.pbf", geoDataUrl: "http://support.activemapjs.de/vt/kreise/layerinfos.json", maxZoom: 9 }); // ... und der Karte hinzuf�gen mymap.addLayer(lal); // F�r die Arbeit mit der Gebietsebene ben�tigen wir vor allem das AreaLayer-Objekt // aus dem ActiveMap-Objektmodell. (die oben eingef�gte Ebene stammt aus dem Leaflet- // Objektmodell und bietet nur die allgemeinen Funktionen eines Leaflet-Layers) var al = lal.getAreaLayer(); // zun�chst alle Gebiete halbtransparent hellgrau F�rben al.setDefaultBrush({ color: '#CCCCCC', opacity: 0.5 }); // f�r alle weiteren Arbeiten mit Gebieten sollten wir warten, bis die // Karte fertig geladen wurde. Dazu h�ngen wir uns an das GeodataReady-Ereignis. lal.getAreaLayer().geodataready.on(onAreaLayerReady); function onAreaLayerReady(e) { // alle Geodaten liegen vor. // alle Gebiete im Nummernintervall 03000..07000 rot einf�rben al.getAreas().getWithinInterval("03000", "07000").setBrush({ color: '#FF0000' }); } // au�erdem soll noch f�r die aktuelle Mausposition das �berfahrene Gebiet // angezeigt werden. Dazu h�ngen wir uns an das ObjectHit-Ereignis. lal.getAreaLayer().objecthit.on(onAreaLayerObjectHit); var statustext = document.getElementById("statustext"); function onAreaLayerObjectHit(e) { let statusText = ""; statustext.textContent = ""; if (e.Area) { // wenn ein Gebiet getroffen wird, den Statustext updaten. statusText = al.getAreas().getArea(e.Area).getName(); } statustext.textContent = statusText; } </script> </body> </html>