PDOK laag als WMS laag in Google Maps

Hallo allemaal,

Ik kwam dit forum tegen met veel informatie over PDOK en ik ben op zoek naar een mogelijkheid om een PDOK laag (bv. kadaster) als overlay op een Google Maps kaart te tonen. Met bv. Open Street Map is dit mogelijk met de API van Google en een TileMapServer van OSM.

Is zoiets ook mogelijk voor een PDOK kaartlaag? Of ben ik hier verkeerd voor deze vraag en weet iemand waar ik wel terecht kan?

//Define OSM map type pointing at the OpenStreetMap tile server
map.mapTypes.set("OSM", new google.maps.ImageMapType({
    getTileUrl: function (coord, zoom) {
        return "http://tile.openstreetmap.org/" + zoom + "/" + coord.x + "/" + coord.y + ".png";
    },
    tileSize: new google.maps.Size(256, 256),
    name: "Kaart",
    maxZoom: 18
}));

Ronald

Je kan vanuit GMaps zeker PDOK kaartlagen toevoegen. Let wel, als het om afbeeldingen gaat, kan het kan alleen met de WMS, niet met TMS of WMTS. De WMS kan je aanroepen met verschillende projecties. In de WMTS/TMS is de projectie (het Rijksdriehoekstelsel al voorgebakken). Google gebruikt namelijk een eigen spatial reference systeem:

var WMSLayer = new google.maps.ImageMapType({
    getTileUrl: function (coord, zoom) {
        var proj = map.getProjection();
        var zfactor = Math.pow(2, zoom);

        // get Long Lat coordinates
        var top = proj.fromPointToLatLng(new google.maps.Point(coord.x * 256 / zfactor, coord.y * 256 / zfactor));
        var bot = proj.fromPointToLatLng(new google.maps.Point((coord.x + 1) * 256 / zfactor, (coord.y + 1) * 256 / zfactor));

        //create the Bounding box string
        var bbox =     top.lng() + "," +
                       bot.lat() + "," +
                       bot.lng() + "," +
                       top.lat();

        //base WMS URL
        var url = "http://geodata.nationaalgeoregister.nl/wijkenbuurten2014/wms?";
            url += "REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&SRS=EPSG:4326&BBOX=" + bbox + "&WIDTH=256&HEIGHT=256";
            url += "&LAYERS=" + "cbs_buurten_2014";
            url += "&STYLES=" + "wijkenbuurten_thema_buurten_gemeentewijkbuurt_gemiddeld_aantal_autos_per_huishouden";
            url += "&FORMAT=image/png" ;
            url += "&TRANSPARENT=TRUE";
        return url;
    },
    tileSize: new google.maps.Size(256, 256),
    isPng: true
});

map.overlayMapTypes.push(WMSLayer);
2 likes

Beste emacgillavry,

Bedankt voor je snelle reactie. Ik heb een en ander kunnen testen en jouw voorbeeld werkt goed. Bedankt, hier ga ik verder mee knutselen.

Ronald

1 like

In het eerste antwoord wordt genoemd dat het alleen met WMS kan. Is het echt niet mogelijk om iets met WMTS of TMS op de Google kaart te plakken als laag? BGT is nl. niet als WMS beschikbaar.

Met NL Maps van Kadaster kan de BRT-Achtergrondkaart gemakkelijk worden gebruikt in verschillende JavaScript mapping API’s, zoals LeafletJS, OpenLayers en Google Maps JavaScript API.

Je kan dus met NL Maps aan de slag (documentatie) of je kan zelf de benodigde code schrijven om een XYZ-laag in Google Maps te ontsluiten. Je hebt dan wel het URL-template nodig van de BRT-Achtergrondkaart:

Voor de BRT-Achtergrondkaart is dit mogelijk, omdat deze ook in dezelfde projectie als Google Maps beschikbaar is, namelijk Spherical Mercator (zie EPSG:3857 in de URL’s) en volgens het XYZ-tiling schema.

De BGT is op PDOK (nog) niet in de Spherical Mercator projectie beschikbaar en volgens het XYZ-tiling schema. Ook ontbreekt er nog een WMS voor deze basisregistratie, waardoor je deze on-the-fly zou kunnen herprojecteren. Voor nu is het dus even geen optie om BGT vanuit PDOK met Google Maps te gebruiken. Je kan er natuurlijk ook voor kiezen om zelf een BGT service in de juiste projectie in te (laten) richten.

2 likes