Saya menjalankan layanan pemetaan lokal sederhana berdasarkan tumpukan PostGIS / GeoServer / OpenLayers.
Mengikuti tutorial pembuka Saya telah mengaitkan acara klik di OpenLayers ke panggilan WMS GetFeatureInfo menggunakan:
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"
);
});
Saya telah menggunakan template FreeMarker GeoServer untuk memformat respons dengan benar. Masalah yang saya miliki adalah bahwa respons yang saya dapatkan mengembalikan semua bidang dari layer.
Apakah ada cara untuk memilih yang relevan bagi pengguna?
Hanya saja, jangan memasukkan bidang yang tidak Anda inginkan dalam templat freemarker Anda. Lihat http://docs.geoserver.org/trunk/en/user/tutorials/GetFeatureInfo/index.html#custom-templates
sumber
Anda dapat melakukan ini menggunakan parameter permintaan WMS GeoServer propertyName:
http://docs.geoserver.org/stable/en/user/services/wms/vendor.html#propertyname
sumber
Anda dapat menambahkan pernyataan kondisional ke templat freemarker.
Misalnya dalam file content.ftl Anda, Anda dapat menambahkan sesuatu seperti ini hanya pada daftar "YOUR_FIELDNAME".
Atau Anda dapat mengecualikan bidang dengan melakukan ini:
sumber
Bagaimana dengan ini?
Dari: http://trac.osgeo.org/openlayers/wiki/GetFeatureInfo
sumber