Für WMS Schichten von jedem wms/WFS-Server bedienen Sie ein wms Feature-Anfrage ausführen können, bekommen so etwas wie die folgenden verwenden:
var url = myWMSLayer
.getSource()
.getGetFeatureInfoUrl(
evt.coordinate,
map.getView().getResolution(),
map.getView().getProjection(),
{
'INFO_FORMAT': 'application/json',
'propertyName': 'ATTR1,ATTR2,ATTR3'
}
);
Dies sollten Sie jede Funktion gibt es innerhalb der event.coordinate
weitergegeben. So können Sie alle Funktionen innerhalb des angegebenen Punktes zurück erhalten. Ich denke, dies ist Ihre einzige Option, wenn Sie nur WMS-Anfragen auf dem Server haben.
Aber wenn Ihr Server WFS-Anfragen unterstützt und Sie Zugriff darauf haben, können Sie eine wfs-Anfrage ausführen, um die gewünschten Funktionen zu erhalten. So etwas wie folgt vor:
//here is the rectangle to search for fetaures
var extent [-8876804.07807116, 5368955.976007851, -8866790.827365803, 5374688.75312924];
$.ajax('http://demo.opengeo.org/geoserver/wfs', {
type: 'GET',
data: {
service: 'WFS',
version: '1.1.0',
request: 'GetFeature',
typename: 'mylayer',
srsname: 'EPSG:3857',
bbox: extent.join(',') + ',EPSG:3857'
}
}).done(function(resp){
//you may parse the responce back here
var formatWFS = new ol.format.WFS();
var feats = formatWFS.readFeatures(resp);
//now you can iterate through your features and get the attrs
for (var i=0;i<feats.length;i++){
console.log(feats[i].get('ATTR1'));
}
}).fail(function() {
alert("fail loading features");
});
Ist Ihr 'vectorSource' Variable auf Openlayers des' Map' Objekt? –