Ich verwende einen einfachen lokalen Zuordnungsdienst basierend auf dem PostGIS / GeoServer / OpenLayers-Stack.
Nach dem Opengeo- Tutorial habe ich Klickereignisse in OpenLayers mit dem WMS GetFeatureInfo-Aufruf verknüpft.
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"
);
});
Ich habe die FreeMarker- Vorlagen von GeoServer verwendet, um die Antwort korrekt zu formatieren. Das Problem, das ich habe, ist, dass die Antwort, die ich erhalte, alle Felder von der Ebene zurückgibt.
Gibt es eine Möglichkeit, diejenigen auszuwählen, die für den Benutzer relevant sind?
Fügen Sie einfach nicht die Felder ein, die Sie nicht in Ihre Freemarker-Vorlage aufnehmen möchten. Siehe http://docs.geoserver.org/trunk/en/user/tutorials/GetFeatureInfo/index.html#custom-templates
quelle
Sie können dies mit dem Anforderungsparameter GeoServer propertyName WMS tun:
http://docs.geoserver.org/stable/en/user/services/wms/vendor.html#propertyname
quelle
Sie können Freemarker-Vorlagen bedingte Anweisungen hinzufügen.
Zum Beispiel können Sie in Ihrer content.ftl-Datei so etwas hinzufügen, um nur "YOUR_FIELDNAME" aufzulisten.
Alternativ können Sie ein Feld folgendermaßen ausschließen:
quelle
Was ist damit?
Von: http://trac.osgeo.org/openlayers/wiki/GetFeatureInfo
quelle