【发布时间】:2020-12-07 05:07:42
【问题描述】:
我正在尝试使用 openlayers 中的 getFeatureInfoUrl 获取我用鼠标单击的地图的特征信息。
但是无论我点击哪里,我都会得到有关底层的信息。 ex) 我点击的地方是下面的idc_gis:adhp_boundary,但是我想知道的信息是idc_gis:adhp_buld。
如何只有点击点上的最高层才能获取信息? 我发现使用 QUERY_LAYERS 属性只有某些图层可以获取信息,但是当我使用该属性命名它们时,如果它们不在点击中,我会返回未定义的。
我只想获取有关我曾经在特定图层中单击过的最高图层的信息。
这是我的代码。谢谢。
function addLayerTileWMS(layer_id, layer_name, visible, url, params){
var layer = new ol.layer.Tile({id : layer_id, name : layer_name});
layer.setVisible(visible);
layer.setSource(new ol.source.TileWMS({
url: url,
serverType: 'geoserver',
params: {
'TILED': true,
'VERSION': !params.version ? '1.1.0' : params.version, // must be 1.1.0, not 1.3.0
'SRS' : !params.srs ? this.getView().getProjection().getCode() : params.srs, //Spatial Reference System
'FORMAT': !params.format ? 'image/png' : params.format,
'TRANSPARENT': !params.transparent ? true : params.transparent,
'LAYERS' : !params.layers ? '' : params.layers,
'STYLES' : !params.styles ? '' : params.styles,
'VIEWPARAMS' : !params.viewparams ? '' : params.viewparams,
'CQL_FILTER' : !params.cqlFilter ? null : params.cqlFilter
}
}));
return layer;
}
var map = new ol.Map({
layers: [],
target: 'map',
view: new ol.View({
projection: 'EPSG:5179',
zoom: 15,
minZoom: 6,
maxZoom: 20
}),
controls: []
});
var url = 'http://myurl/geoserver/wms';
var params = {layers : 'idc_gis:adhp_boundary,idc_gis:adhp_surface_a,idc_gis:adhp_surface_runway,idc_gis:adhp_buld,idc_gis:adhp_surface_ap', srs : 'EPSG:5179'}
var legendLayer = addLayerTileWMS("legendLayer", "legendLayer", true, url, params);
map.addLayer(legendLayer);
map.on('click', function(evt){
var coordinate = evt.coordinate;
var viewResolution = map.getView().getResolution();
var viewProjection = map.getView().getProjection();
var layers = map.getLayers().getArray();
for(var i=0; i<layers.length; i++){
if(layers[i].get('name') == 'legendLayer'){
legendSource = layers[i].getSource();
var url = legendSource.getFeatureInfoUrl(
coordinate, viewResolution, viewProjection,
{ 'INFO_FORMAT': 'application/json',
}
);
console.log(url);
}
}
});
【问题讨论】:
-
您是否正在制作具有地图功能的自定义内部应用程序?您尝试向最终用户展示的功能到底是什么?您在哪个平台上编写代码?
标签: javascript gis openlayers