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



我已经使用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 });

这有效,但只有在我用鼠标输入至少触发请求一次之后。在手动请求之前,自动请求不会触发功能选择事件。

一旦我通过鼠标单击触发了事件,我就可以使用带有边界输入的控制请求方法。

任何意见都非常受欢迎,因为我已经为此投入了很多时间。

谢谢丹尼斯

我自己发现了这个问题。我不确定这是否是OpenLayers脚本中的错误。

当我像这样请求控件时,GetFeature 控件的修饰符属性为 null:

.request(new OpenLayers.Bounds([lonLat.lon, lonLat.lat, lonLat.lon, lonLat.lat]), { single: true });

而不是通过单击地图对象。

一旦我通过在映射中单击来调用控件,修饰符属性将设置为 {multiple:null,toggle:null}。

如果我像这样在控件上声明修饰符属性:

.modifiers = {multiple:null,toggle:null}

我可以在不单击地图的情况下运行 .request。

这是我的疏忽吗?OL 文档没有说明应手动声明修饰符。但是,文档页面中没有给出默认值。

丹尼斯

最新更新