Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用传单修改WMS的GetFeatureInfo请求_Javascript_Leaflet_Wms_Getfeatureinfo - Fatal编程技术网

Javascript 使用传单修改WMS的GetFeatureInfo请求

Javascript 使用传单修改WMS的GetFeatureInfo请求,javascript,leaflet,wms,getfeatureinfo,Javascript,Leaflet,Wms,Getfeatureinfo,我有一张用传单做成的地图。有三个底图。第一个是基本的OSM地图。第二个和第三个(“边界”和“FNP”)是WMS。我想通过从WMS“FNP”获取FeatureInfo来显示属性,但只想请求列“GEMEINDE”、“NUTZUNG”和“STAND”的值。以下是此操作的代码: FNP html,正文{ 身高:100% } #mapid{ 宽度:1000px; 高度:800px; } @介质(最大宽度:1000px){ #mapid{ 宽度:100%; 身高:100% } } L.TileLayer

我有一张用传单做成的地图。有三个底图。第一个是基本的OSM地图。第二个和第三个(“边界”和“FNP”)是WMS。我想通过从WMS“FNP”获取FeatureInfo来显示属性,但只想请求列“GEMEINDE”、“NUTZUNG”和“STAND”的值。以下是此操作的代码:


FNP
html,正文{
身高:100%
}
#mapid{
宽度:1000px;
高度:800px;
}
@介质(最大宽度:1000px){
#mapid{
宽度:100%;
身高:100%
}
}
L.TileLayer.BetterWMS=L.TileLayer.WMS.extend({
onAdd:函数(映射){
//将图层添加到地图时触发。
//注册一个click侦听器,然后执行所有上游WMS操作
L.TileLayer.WMS.prototype.onAdd.call(this,map);
map.on('click',this.getFeatureInfo,this);
},
onRemove:函数(映射){
//从地图中删除图层时触发。
//取消注册click侦听器,然后执行所有上游WMS操作
L.TileLayer.WMS.prototype.onRemove.call(this,map);
map.off('click',this.getFeatureInfo,this);
},
getFeatureInfo:函数(evt){
//向服务器发出AJAX请求,希望一切顺利
var url=this.getFeatureInfoUrl(evt.latlng),
showResults=L.Util.bind(this.showGetFeatureInfo,this);
$.ajax({
url:url,
成功:功能(数据、状态、xhr){
var err=typeof data=='string'?null:数据;
显示结果(err、evt.latlng、数据);
},
错误:函数(xhr、状态、错误){
显示结果(错误);
}
});
},
getFeatureInfoUrl:函数(latlng){
//构造一个给定点的GetFeatureInfo请求URL
var point=this.\u map.latLngToContainerPoint(latlng,this.\u map.getZoom()),
size=this.\u map.getSize(),
参数={
请求:“GetFeatureInfo”,
服务:“WMS”,
srs:‘EPSG:4326’,
样式:this.wmsParams.styles,
透明:this.wmsParams.transparent,
版本:this.wmsParams.version,
格式:this.wmsParams.format,
bbox:this.\u map.getBounds().toBBoxString(),
身高:尺码.y,
宽度:size.x,
图层:this.wmsParams.layers,
查询层:this.wmsParams.layers,
信息格式:“文本/html”,
物业名称:“GEMEINDE、NUTZUNG、STAND”
};
params[params.version=='1.3.0'?'i':'x']=point.x;
params[params.version=='1.3.0'?'j':'y']=point.y;
返回此。_url+L.Util.getParamString(params,this。_url,true);
},
showGetFeatureInfo:函数(错误、板条、内容){
if(err){console.log(err);return;}//如果出现错误,则不执行任何操作
//否则,在弹出窗口中显示内容或其他内容。
L.popup({maxWidth:800})
.setLatLng(latlng)
.setContent(content)
.openOn(这张地图);
}
});
L.tileLayer.betterWms=函数(url,选项){
返回新的L.TileLayer.BetterWMS(url,选项);
};
var map=L.map('mapid'{
中间:[50.8,14],
缩放:11
});
变量基本映射={
OSM:L.Tillelayer('https://cartodb-basemaps-{s} .global.ssl.fastly.net/light_all/{z}/{x}/{y}{r}.png'{
minZoom:4,
maxZoom:19,
属性:'Map tiles by | Map data by',
子域:“abcd”
}),
边界:L.Tillelayer.betterWms('https://demo.boundlessgeo.com/geoserver/ows?', {
图层:“ne:ne\U 10m\U管理\U 0\U边界线\U土地”,
透明:是的,
格式:'image/png'
}),
FNP:L.Tillelayer.betterWms(“https://rz.ipm-gis.de/ags01/services/RAPIS/RAPIS_FNP/MapServer/WmsServer?", {
图层:“1”,
格式:'image/png',
透明:是的,
属性:“WMS:”
})
};
层(基本映射,{},{折叠:false}).addTo(映射);
basemaps.FNP.addTo(map);
你知道为什么一个wms的指令有效,而另一个却不行吗


您在“WMS边界”标题下提到的服务不是WMS,而是WFS。WFS不支持名为
GetFeatureInfo
的操作,只有WMS支持该操作。

感谢您的回复!我认为WMS“FNP”的所有功能都是强制性的,因此我无法隐藏它们。有趣的是,WMS“边界”的要求是有效的,即使它是WFS。(任何)WMS提供了服务提供商希望您在默认情况下看到的基础功能的地图图像(默认样式),如果您想要不同的地图图像(具有不同的功能),您需要提供自己的SLD,对于服务器的应用,我认为它只能这样做。与此同时,我做了一项工作。无论如何,谢谢你的快速回复!