Estoy ejecutando un servicio de mapeo local simple basado en la pila PostGIS / GeoServer / OpenLayers.
Siguiendo el tutorial de opengeo , he vinculado los eventos de clic en OpenLayers a la llamada WMS GetFeatureInfo usando:
map.events.register('click', map, function (e) {
var url = "http://localhost:1979/geoserver/wms"
+ "?REQUEST=GetFeatureInfo"
+ "&EXCEPTIONS=application/vnd.ogc.se_xml"
+ "&BBOX=" + map.getExtent().toBBOX()
+ "&X=" + e.xy.x
+ "&Y=" + e.xy.y
+ "&INFO_FORMAT=text/html"
+ "&QUERY_LAYERS=MYDATA:MYLAYER"
+ "&LAYERS=MYDATA:MYLAYER"
+ "&FEATURE_COUNT=5"
+ "&SRS=EPSG:3857"
+ "&STYLES="
+ "&WIDTH=" + map.size.w
+ "&HEIGHT=" + map.size.h;
window.open(url,
"getfeatureinfo",
"location=0,status=0,scrollbars=1,width=800,height=125"
);
});
He usado las plantillas de FreeMarker de GeoServer para formatear la respuesta correctamente. El problema que tengo es que la respuesta que obtengo devuelve todos los campos de la capa.
¿Hay alguna manera de seleccionar los que son relevantes para el usuario?
Simplemente no incluya los campos que no desea en su plantilla de marcador libre. Ver http://docs.geoserver.org/trunk/en/user/tutorials/GetFeatureInfo/index.html#custom-templates
fuente
Puede hacerlo utilizando el parámetro de solicitud WMS GeoServer propertyName:
http://docs.geoserver.org/stable/en/user/services/wms/vendor.html#propertyname
fuente
Puede agregar declaraciones condicionales a las plantillas de marcadores libres.
Por ejemplo, en su archivo content.ftl puede agregar algo como esto para enumerar solo "YOUR_FIELDNAME".
Alternativamente, puede excluir un campo haciendo esto:
fuente
¿Qué hay de esto?
De: http://trac.osgeo.org/openlayers/wiki/GetFeatureInfo
fuente