Javascript OpenLayers标记';s具有ctrl行为的弹出窗口

Javascript OpenLayers标记';s具有ctrl行为的弹出窗口,javascript,openlayers,Javascript,Openlayers,我有一个关于OpenLayers.Marker事件的问题。 我想要一张有几个标记和弹出窗口的地图。默认情况下,单击标记将显示弹出窗口。单击任何其他标记将隐藏以前的弹出窗口并显示新的弹出窗口。 这适用于: marker.events.register('click', marker, function(e){ var popup = new OpenLayers.Popup.FramedCloud("Popup",

我有一个关于OpenLayers.Marker事件的问题。 我想要一张有几个标记和弹出窗口的地图。默认情况下,单击标记将显示弹出窗口。单击任何其他标记将隐藏以前的弹出窗口并显示新的弹出窗口。 这适用于:

marker.events.register('click', marker, function(e){
                   var  popup = new OpenLayers.Popup.FramedCloud("Popup",
                                new OpenLayers.LonLat(val.longitude,val.latitude).transform(
                                    new OpenLayers.Projection("EPSG:4326"),
                                    map.getProjectionObject()),
                                null,
                                '<div>Hello World! Put your html here</div>',
                                null,
                                true);
                    map.addPopup(popup, **true**);
marker.events.register('click',marker,function(e){
var popup=new OpenLayers.popup.FramedCloud(“popup”,
新OpenLayers.LonLat(val.longitude,val.latitude).transform(
新OpenLayers.投影(“EPSG:4326”),
map.getProjectionObject()),
无效的
“你好,世界!把你的html放在这里”,
无效的
正确的);
map.addPopup(弹出窗口,**true**);

如果我想单击多个标记并使用CTRL键显示所有标记的弹出窗口(如map.addPopup(popup,false)?我不知道如何操作:(

看起来,您想要实现这一点:当按下Ctrl键并且用户选择Marker时,当前打开的所有弹出窗口都将保持打开状态;当选择Marker而不按Ctrl键时,所有其他弹出窗口都将关闭

以下事情会突然出现在脑海中:首先,跟踪Ctrl键是否按下(据我所知,除了收听keydown和keyup事件外,没有其他方法):

当向地图添加弹出窗口时,只需检查控制键的状态:

if (ctrlIsDown)
    map.addPopup(popup, false);
else
    map.addPopup(popup, true);
if (ctrlIsDown)
    map.addPopup(popup, false);
else
    map.addPopup(popup, true);