PageSourceSearch

https://wandelroutenetwerk.nl/Scripts/route-kenmerken.js?v=20260907b

js wandelroutenetwerk.nl collected 2026-09-24 10:59:34 UTC 4,180 bytes, 87 lines download raw bytes

1/*
2    De kenmerken van een routebeen: de omgevingsicoontjes en de kenmerkregels.
3
4    Dit stond twee keer bijna-identiek in route-render.js en routedetails-render.js. Toen de
5    vier landgebruiksbits erbij kwamen die sinds 4-9-2026 gevuld worden, was dat de derde keer
6    dezelfde regels op twee plekken overschrijven -- vandaar dit bestand. De teksten kwamen al
7    uit één tabel (route-texts.js); nu de logica ook.
8
9    TWEE BITMASKERS, TWEE KOLOMMEN
10
11      node.LanduseFlags   routes.landuseflags -- waar loopt dit been doorheen (bos, water, ...)
12      node.SegmentFlags   routes.segmentflags -- wat ligt er op dit been (veerpont, ...)
13
14    Ze staan in aparte databasekolommen omdat de tagger landuseflags volledig herberekent en
15    overschrijft; een veerpontbit daarin zou bij de eerstvolgende taggerdraai verdwijnen.
16
17    De betekenis van de SegmentFlags-bits staat in
18    routenetwerk-delphi\SQL\Add-segmentflags.sql, die van de LanduseFlags-bits in
19    routenetwerk-delphi\uRouteTagger.pas:43-55. Loopt dit bestand daarmee uit de pas, dan zijn
20    die bestanden goed en is dit fout.
21
22    WAAROM EEN LIJST EN GEEN OBJECT MET BITGETALLEN ALS SLEUTEL
23
24    De oude versie gebruikte { 0x02: {...}, 0x04: {...} }. Heeltallige sleutels worden in
25    JavaScript array-indices, dus Object.entries geeft ze in numerieke volgorde terug -- niet in
26    de volgorde waarin je ze opschrijft. Met een lijst is de volgorde hieronder ook de volgorde
27    op het scherm.
28*/
29(function () {
30
31    // Landgebruik: icoontjes in de smalle kolom. De bits $01 (gemeten), $40 (overig) en $100
32    // (grasland) krijgen met opzet geen icoon -- "gemeten" is geen kenmerk en "overig" en
33    // "grasland" zeggen de bezoeker niets.
34    var landgebruik = [
35        { bit: 0x002, icoon: '🌳',  tekst: 'landuseForest'   },
36        // 🌱 en 🌾 stonden omgedraaid: de korenaar hoorde bij heide en het kiemplantje bij
37        // landbouwgrond. Voor de meeste mensen leest dat precies andersom.
38        { bit: 0x004, icoon: '🌱',  tekst: 'landuseHeath'    },
39        // Een enkel huis en niet 🏘️ (een rij huizen): dat laatste is op 25 pixels een
40        // onherkenbaar blokje.
41        { bit: 0x008, icoon: '🏠',  tekst: 'landuseUrban'    },
42        { bit: 0x010, icoon: '🌾',  tekst: 'landuseFarmland' },
43        { bit: 0x020, icoon: '💧',  tekst: 'landuseWater'    },
44        { bit: 0x080, icoon: '🏖️',  tekst: 'landuseBeach'    },
45        { bit: 0x200, icoon: '🌿',  tekst: 'landuseNature'   },
46        { bit: 0x400, icoon: '🚗',  tekst: 'landuseBusyRoad' },
47        { bit: 0x800, icoon: '⛰️',  tekst: 'landuseDike'     }
48    ];
49
50    // Wat er op het been ligt. Uit routes.segmentflags, een ander bitmasker dan het
51    // landgebruik hierboven -- vandaar de eigen lijst, ook al staan ze in dezelfde cel.
52    var kenmerken = [
53        { bit: 0x002, icoon: '⛴️', tekst: 'kenmerkVeerpont' }
54    ];
55
56    window.routeKenmerken = {
57
58        /*
59            Vult de icoonkolom. De cel wordt altijd toegevoegd, ook als hij leeg blijft --
60            anders lopen de kolommen van de rijen niet meer gelijk.
61
62            De veerpont staat vooraan en niet tussen het landgebruik: het is het enige
63            kenmerk waar de bezoeker iets voor moet doen -- op tijd zijn, overvaren. De rest
64            is sfeer.
65        */
66        vulLandgebruik: function (cel, node) {
67            kenmerken.forEach(function (k) {
68                if (!node.SegmentFlags || (node.SegmentFlags & k.bit) === 0) return;
69                var span = document.createElement('span');
70                span.textContent = k.icoon;
71                span.title = routeText(k.tekst);
72                span.classList.add('me-2');
73                cel.appendChild(span);
74            });
75
76            if (!node.LanduseFlags) return;
77            landgebruik.forEach(function (k) {
78                if ((node.LanduseFlags & k.bit) === 0) return;
79                var span = document.createElement('span');
80                span.textContent = k.icoon;
81                span.title = routeText(k.tekst);
82                span.classList.add('me-2');
83                cel.appendChild(span);
84            });
85        }
86    };
87})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.