繁体   English   中英

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

[英]OpenLayers: GetFeature WFS request doesn't trigger the featureselected event prior to mouse input

我已经使用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事件。

一旦用鼠标单击触发了事件,就可以将控制请求方法与边界输入一起使用。

因为我已经花了很多时间在此方面,所以任何输入都值得欢迎。

谢谢,丹尼斯

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

当我这样请求控件时,GetFeature控件的Modifys属性为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文档没有声明应手动声明修饰符。 但是,文档页面中未提供默认值。

丹尼斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM