OpenLayers标记的弹出窗口具有ctrl行为

时间:2013-10-01 11:52:06

标签: javascript openlayers

我对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**);

如果我想点击多个标记并使用CTRL键显示所有标记的弹出窗口(map.addPopup(popup, false )等行为),该怎么办?我不知道该怎么做。 :(

1 个答案:

答案 0 :(得分:0)

看起来,你想实现这个目的:当Ctrl关闭并且用户选择Marker时,所有当前打开的弹出窗口都将保持打开状态;当没有按Ctrl键选择Marker时,所有其他弹出窗口都将被关闭?

记住以下事项:首先,跟踪,Ctrl键是否关闭(据我所知,除了监听keydown和keyup事件之外别无他法):

var ctrlIsDown = false;

$(window).keydown(function(e){
    if (e.ctrlKey)
        ctrlIsDown = true;
});

$(window).keyup(function(e){
    if (e.ctrlKey)
        ctrlIsDown = false;
});

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

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