Goedenavond,
Vandaag heb ik mijn verzameling OpenLayers voorbeelden uitgebreid met een kaartlaag in grijstinten.
Want soms wil je dat: een achtergrondkaart zonder kleur om je eigen (thematische) gegevens op te projecteren. (Ja, ik weet dat er een BRT Achtergrondkaart “Grijs” beschikbaar is via PDOK, maar persoonlijk vind ik dat deze kaartlaag wel erg veel kleurtjes bevat: groen, geel, blauw, oranje… Teveel kleur - naar mijn bescheiden mening - om de naam “Grijs” te rechtvaardigen.)
Maar goed, ik weet nu hoe ik zelf een kaartlaag grijs moet maken:
- ‘Kopieer’ een bestaande kaartlaag, door een lege kaartlaag aan te maken en deze - met
.getProperties()
- te vullen met de eigenschappen van een bestaande laag. Alleen even de titel aanpassen…
Dus, stap 1:
// add a grayscale layer
let openTopoAchtergrondkaartGrijsLayer = new TileLayer(openTopoAchtergrondkaartLayer.getProperties());
openTopoAchtergrondkaartGrijsLayer.set('title', 'OpenTopo Achtergrond (grijs)');
- Pas een functie toe die -
'postrender'
- alle pixels in de kaart naar een grijstint vertaalt
Dus stap 2:
openTopoAchtergrondkaartGrijsLayer.on('postrender', function(event) {
convertToGrayScale(event.context);
});
De volledige functie convertToGrayScale
is hier te vinden, in mijn GitHub repository.
(Ik heb de functie in een aparte module ondergebracht, dus ook met het gebruik van npm
heb ik in deze oefening nieuwe kennis en ervaring opgedaan. Zo ga ik elke dag een beetje minder dom slapen… )
Het resultaat is hier te bekijken:
https://twiav.nl/nl/openlayers/ol-retain-mapstate-nl-basemaps/#map=11/162643/460928/3
En de broncode staat op GitHub (doe er mee wat je wil ):
Wat vinden jullie hiervan? Verbetersuggesties? Testresultaten? Laat maar horen.
Gelukkig Nieuwjaar,
Egge-Jan