我已经使用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 文档没有说明应手动声明修饰符。但是,文档页面中没有给出默认值。
丹尼斯