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.