OpenLayers:GetFeature WFS请求在鼠标输入之前不会触发featureselected事件

时间:2014-02-19 22:01:16

标签: javascript openlayers

我已经设置了一个带有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事件。

用鼠标点击触发事件后,我可以使用带有边界输入的控制请求方法。

任何输入都非常受欢迎,因为我已经花了很多时间。

谢谢, 丹尼斯

1 个答案:

答案 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文档未声明应手动声明修饰符。但是,文档页面中没有给出默认值。

丹尼斯