我已经设置了一个带有WFS协议的GetFeature控件,在添加并激活控件后,单击鼠标就可以正常工作。
selectControl.events.register("featureselected", this, function (e) {
vectorLayer.addFeatures([e.feature]);
});
selectControl.events.register("featureunselected", this, function (e) {
vectorLayer.removeFeatures([e.feature]);
});
map.addControl(selectControl);
selectControl.activate();
我想自动从新创建的点位置请求控件,如下所示:
map.controls[5].request(new OpenLayers.Bounds([lonLat.lon, lonLat.lat, lonLat.lon, lonLat.lat]), { single: true });
这只有在我用鼠标输入触发请求至少一次后才有效。在手动请求之前,自动请求不会触发featureselected事件。
用鼠标点击触发事件后,我可以使用带有边界输入的控制请求方法。
任何输入都非常受欢迎,因为我已经花了很多时间。
谢谢, 丹尼斯
答案 0 :(得分:0)
我自己发现了这个问题。我不确定这是否是OpenLayers脚本中的错误。
当我请求控件时,GetFeature控件的modifiers属性为null:
.request(new OpenLayers.Bounds([lonLat.lon, lonLat.lat, lonLat.lon, lonLat.lat]), { single: true });
而不是点击地图对象。
通过单击地图调用控件后,modifiers属性设置为{multiple:null,toggle:null}。
如果我在控件上声明modifiers属性,如下所示:
.modifiers = {multiple:null,toggle:null}
我可以在不点击地图的情况下运行.request。
这是我的疏忽吗? OL文档未声明应手动声明修饰符。但是,文档页面中没有给出默认值。
丹尼斯