Suite

Obtenez toutes les informations sur les caractéristiques qui se chevauchent à l'aide de WMS GetFeatureInfo, OL3, Geoserver

Obtenez toutes les informations sur les caractéristiques qui se chevauchent à l'aide de WMS GetFeatureInfo, OL3, Geoserver


J'ai construit une carte ol3 simple avec la fonctionnalité de superposition wms-polygon à partir d'un géoserveur local 2.8.0. J'ai ajouté un "WMS GetFeatureInfo" fonctionnel à partir des exemples ol3. Mon problème est que j'ai des polygones identiques qui se chevauchent avec des attributs différents. Lorsque je clique sur un polygone (avec 10 copies identiques), j'obtiens juste les informations d'une entité (peut-être celle du haut).

Au lieu de cela, j'ai besoin d'un résultat de toutes les caractéristiques identiques qui se chevauchent.

Est-ce que quelqu'un sait comment mettre en œuvre cela, ci-dessous est ma tentative?

C'est mon code :

var wmsSource = new ol.source.TileWMS({ url : 'http:localhost:8082/geoserver/wms', paramètres : {'LAYERS' : 'gdi:M4_Porjektkarte'}, serverType : 'geoserver', }); var wmsLayer = new ol.layer.Tile({ source : wmsSource }); var view = new ol.View({ center: [0,0], zoom: 3 }); var map = new ol.Map({ couches : [wmsLayer], cible : 'carte', vue : vue }); map.on('singleclick', function(evt) { document.getElementById('info').innerHTML ="; var viewResolution = /** @type {number} */ (view.getResolution()); var url = wmsSource.getGetFeatureInfoUrl( evt.coordinate, viewResolution, 'EPSG:3857', {'INFO_FORMAT': 'text/html'}); if (url) { document.getElementById('info').innerHTML = ''; } });

vous devez analyser la réponse obtenue pour saisir toutes les fonctionnalités. considérez le fragment de code suivant :

map.on('singleclick', function(evt) { var url = wms_layer.getSource().getGetFeatureInfoUrl( evt.coordinate, viewResolution, viewProjection, {'INFO_FORMAT': 'text/javascript', 'propertyName': 'formal_en' }); if (url) { var parser = new ol.format.GeoJSON(); $.ajax({ url: url, dataType: 'jsonp', jsonpCallback: 'parseResponse' }).then(function(response) { var result = parser.readFeatures(response); if (result.length) { var info = []; for (var i = 0, ii = result.length; i < ii; ++i) { info.push(result [i].get('formal_en')); } container.innerHTML = info.join(', '); } else { container.innerHTML = ' '; } }); } });

inspiré de cet exemple


Par spécification WMS, vous ne récupérez qu'une fonctionnalité, à moins que vous n'ajoutiez à l'URL lefeature_countparamètre, indiquant le nombre d'éléments que vous voulez, par exemple, "&feature_count=100".


similaire aux commentaires ci-dessus, en le mettant simplement sous forme Javascript : il devrait suffire d'ajouter le paramètre 'FEATURE_COUNT' à l'appel getGetFeatureInfoURL

var url = wmsSource.getGetFeatureInfoUrl( evt.coordinate, viewResolution, 'EPSG:3857', {'INFO_FORMAT': 'text/html', 'FEATURE_COUNT': 50});


Voir la vidéo: GeoServer. OpenLayers. Apache