De GML heeft een custom schema en OpenLayers zou dit bij mijn weten moeten kunnen tonen. Ik krijg het alleen niet voor elkaar.
Ik heb hier een voorbeeldje gemaakt met een vergelijking tussen een normale en standaard GML: Edit fiddle - JSFiddle - Code Playground. In de console zie je dat bij de standaard GML de features worden geladen maar bij de custom GML niet.
Waarschijnlijk zie ik iets over het hoofd of probeer ik iets wat niet kan maar als iemand me de juiste richting op kan wijzen dan heel graag.
Het lezen van een custom GML schema is erg complex aangezien je daarvoor het XML schema (XSD) moet ophalen en parsen.
Zonder het schema weet OpenLayers niet wat een FeatureCollectionGeometrie is en hoe daar features van te breien zijn. Zelfs als je het schema bekijkt kan je dit niet zien als een uitbreiding van een FeatureCollection (wat OpenLayers wel snapt), want het is daar geen uitbreiding van: het is een uitbreiding van gml:AbstractFeatureType en niet van gml: AbstractFeatureCollectionType (misschien is daar een reden voor…?).
In de GML parser broncode van OpenLayers kan je zien dat de namen van XML elementen ‘hardcoded’ zijn, dus ze moeten echt FeatureCollection, featureMember en dergelijke heten.
Moet je die GML direct van een webservice/api inladen of heb je nog een mogelijkheid om deze te ‘bewerken’ naar een format dat iets vriendelijker is om in de browser te landen? (‘default’ GML of GeoJSON?)
M.a.w. kan je het jezelf makkelijker maken door de juiste problemen op de juiste plek/locatie op te lossen?
Ik kan de GML makkelijk bewerken. Dat was ook mijn plan B maar aangezien OpenLayers een schemaLocation optie heeft ging ik ervanuit dat dat ook zou moeten werken maar wellicht was dat iets te simpel gedacht.
Als ik de OL docs goed lees, is die schemaLocation optie alleen bedoeld voor als je de features vanuit OL naar GML wil schrijven/exporteren, en doet ie dus niks bij het inlezen (bij het gebruik van readFeatures dus):
schemaLocation [string | undefined] Optional schemaLocation to use when writing out the GML, this will override the default provided.