OpenLayers.Control.Button';s触发器参数赢得';我没接到电话

OpenLayers.Control.Button';s触发器参数赢得';我没接到电话,button,triggers,click,openlayers,Button,Triggers,Click,Openlayers,我试图在OpenLayers映射中添加一个按钮,该按钮应该在单击时调用JS函数。我已经设法让它看起来像我想要的那样,但是触发器功能不起作用 如果我有Control.Navigation,单击该按钮似乎会启动一个拖动事件,我甚至可以通过单击该按钮来拖动地图。但是,即使我删除了所有其他控件,按钮的触发器处理程序也不会被调用 我还尝试添加“autoActivate”参数(无论如何,它不会使控件自动激活),我尝试在添加按钮后调用按钮的activate()函数,这似乎会切换控件的“active”属性,但它

我试图在OpenLayers映射中添加一个按钮,该按钮应该在单击时调用JS函数。我已经设法让它看起来像我想要的那样,但是触发器功能不起作用

如果我有Control.Navigation,单击该按钮似乎会启动一个拖动事件,我甚至可以通过单击该按钮来拖动地图。但是,即使我删除了所有其他控件,按钮的触发器处理程序也不会被调用

我还尝试添加“autoActivate”参数(无论如何,它不会使控件自动激活),我尝试在添加按钮后调用按钮的activate()函数,这似乎会切换控件的“active”属性,但它仍然不会响应单击

有人能给我指一下正确的方向吗,或者举个例子?下面是我的非工作示例

谢谢, 贾尼斯


OpenLayers.Control.Button
.olControlButton{
位置:绝对位置;
排名:0;
右:0;
背景:红色;
宽度:22px;
高度:22px;
}
var映射;
var面板;
函数按钮单击()
{
警报(“单击按钮”);
}
函数init()
{
map=new OpenLayers.map('map',{controls:[/*new OpenLayers.Control.Navigation()*/]});
map.addLayer(新的OpenLayers.Layer.WMS(“OpenLayers WMS”),“http://vmap0.tiles.osgeo.org/wms/vmap0“,{layers:'basic'}”);
zoomToMaxExtent();
panel=新的OpenLayers.Control.panel();
map.addControl(面板);
panel.addControls([new OpenLayers.Control.Button({autoActivate:true,displayClass:'olControlButton',触发器:buttonClicked,title:'Button is to click'}]);

//panel.controls[0].activate();按钮DIV无法接收单击事件,因为panel DIV(包含按钮)没有维度。您还应该设置panel DIV的样式。此外,面板下的按钮的类是
olControlButtonItemActive
,因此您需要设置它的样式,而不是
olControlButton

OpenLayers.Control.Panel
处理子控件的激活,要让它自动激活按钮,在实例化新的面板实例时,您应该将
defaultControl
选项设置为
button
。否则,您必须单击按钮一次才能真正触发它


OpenLayers.Control.Button
.olControlButtonItemActive{
位置:绝对位置;
排名:0;
右:0;
背景:红色;
宽度:22px;
高度:22px;
}
.控制面板{
宽度:50px;
高度:50px;
边框:1px纯黑;
}
var映射;
var面板;
函数按钮单击()
{
警报(“单击按钮”);
}
函数init()
{
map=new OpenLayers.map('map',{controls:[/*new OpenLayers.Control.Navigation()*/]});
map.addLayer(新的OpenLayers.Layer.WMS(“OpenLayers WMS”),“http://vmap0.tiles.osgeo.org/wms/vmap0“,{layers:'basic'}”);
zoomToMaxExtent();
button=new OpenLayers.Control.button({displayClass:'olControlButton',触发器:buttonClicked,标题:'button is be clicked'});
panel=newopenlayers.Control.panel({defaultControl:button});
panel.addControls([按钮]);
map.addControl(面板);
}

Aargh,非常感谢!这对我来说是一个非常令人沮丧的问题。我想我也尝试过面板样式,但当时可能犯了一些错误。如果我删除默认按钮设置,按钮实际上会消失。如果我想添加两个按钮呢?只有一个可以作为默认按钮。一个小更正:按钮使用
OpenLayers.Control.type_TOGGLE
do类型的控件时,不必通过面板启用。您可以省略
defaultControl
选项,并使用
olcontrolbuttonineminactive
css类设置两个按钮的样式。