我正在尝试将OpenLayers.Control.WMSGetFeatureInfo与OpenLayers.Popup.FramedCloud结合使用,以从我的地理服务器中检索信息并在弹出窗口中显示它们。 这是我的代码:
var map,wms,point;
function load() {
map = new OpenLayers.Map('map',{});
wms = new OpenLayers.Layer.WMS( "OpenLayers WMS","http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} );
// overlay layer from geoserver
point = new OpenLayers.Layer.WMS( "OpenLayers WMS","http://localhost:8080/geoserver/wms", {layers: 'cite:obj_geom',transparent: true},{projection: new OpenLayers.Projection("EPSG:900913")} );
// add layers
map.addLayers([point,wms]);
map.zoomToExtent(
new OpenLayers.Bounds(36.190737, 35.353912,35.150577, 50.274810)
);
var infoControls = {
click: new OpenLayers.Control.WMSGetFeatureInfo({
url: "http://localhost:8080/geoserver/wms",
title: 'Identify features by clicking',
layers: [point],
maxFeatures: 2,
infoFormat: 'text/plain',
queryVisible: true,
**eventListeners: {/*
getfeatureinfo: function(event) {
map.addPopup(new OpenLayers.Popup.FramedCloud(
"chicken",
map.getLonLatFromPixel(event.xy),
null,
event.text,
null,
true
));
}***/
}
})
};
for (var i in infoControls) {
infoControls[i].events.register("getfeatureinfo", this, showInfo);
map.addControl(infoControls[i]);
}
infoControls.click.activate();
} // end function
function showInfo(evt) {
alert('hello');
console.log("Hurray!");
}
</script>
我已将* .php文件放在geoserver目录中,因此我不需要代理来运行它。使用firebug我可以看到,当我点击一个点时,我发出了一个请求作为响应的功能ID。一切正常。 但我无法弄清楚如何显示弹出窗口。 在互联网上,我发现使用eventlistener的代码但我的问题是,只要我添加evenlistener然后我就不会得到地图。我在屏幕上看不到任何内容。造成这个问题的原因是什么? 任何暗示或帮助都受到高度赞赏。
由于 d。
答案 0 :(得分:0)
语法错误和使用错误函数的组合导致了我的错误。使用Firebug帮助我找到所有语法错误并杀死它们。