var projection = new ol.proj.Projection({
code: âEPSG:28992â,
// The extent is used to determine zoom level 0. Recommended values for a
// projectionâs validity extent can be found at https://epsg.io/.
extent: [5.291266, 52.132633, 53.7, 7.22 ],//[485869.5728, 76443.1884, 837076.5648, 299941.7864],
units: âmâ
});
ol.proj.addProjection(projection);
//var projection = ol.proj.get(âEPSG:28992â);
var projectionExtent = projection.getExtent();
var size = ol.extent.getWidth(projectionExtent) / 256;
var resolutions = new Array(26);
var matrixIds = new Array(26);
for (var z = 0; z < 26; ++z) {
// generate resolutions and matrixIds arrays for this WMTS
resolutions[z] = size / Math.pow(2, z);
matrixIds[z] = âEPSG:28992:â + z;
}
Toch krijg ik het niet voor elkaar om deze brt laag te zien. Weet niet waar ik het fout doe.
Naar aanleiding van je vraag heb ik een voorbeeld gemaakt met OpenLayers 4. Er zijn een aantal aspecten waar je rekening mee moet houden die beschreven zijn in de Nederlandse tiling richtlijn:
De extent zet je in de RD-coördinaten
De resolutions, dus wat is het aantal pixels per meter per zoomniveau, ervan uitgaande dat 1 dot ~ 0.28mm is (een OGC-dingetje)
De matrixIds zijn er 15, zoals je kan vinden in het GetCapabilities-document dat je aanroept
Kortom: als je dit eenmaal weet, kan je verder. Maar goed, het vergt nogal wat voorkennis.
Gelukkig kan het ook makkelijker als je niet aan het Rijksdriehoekstelsel gebonden bent, namelijk met behulp van NL Maps. Je kiest een kaartlaag en selecteert OpenLayers als JS bibliotheek en je krijgt de code op een presenteerblaadje. Wil je iets meer, dan kan je de code van NL Maps als NPM-packages aan je eigen project toevoegen.
Dit heeft mij enorm geholpen. Ik kwam al niet uit met de url welke precies moest zijn.
Daarnaast had ik ook al moeite met de resolutie, de matrixIds en de extent idd.
Ik heb je voorbeeld gevolgd en het werkt zoals verwacht. Ik ben nu alleen bij het punt aan gekomen dat ik een punt will toevoegen fromLonLat. Ik heb de projection ge-add maar hij wil nog altijd niet de coordinaten transformeren.
var projectionExtent = [-285401.92, 22598.08, 595401.9199999999, 903401.9199999999];
var projection = new ol.proj.Projection({ code: 'EPSG:28992', units: 'm', extent: projectionExtent });
ol.proj.addProjection(projection);
console.log(ol.proj.fromLonLat([5.2, 52.25], 'EPSG:28992'));
Mijn vraag is dan ook is dit de juiste manier? Zo nee, wat doe ik fout?
OpenLayers kent de string âEPSG: 28992â op zichzelf niet. Het is slechts een waarde van de property code van het object projection. Je moet dus het hele object meegeven: