0

我对 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 ))怎么办?我不知道该怎么做。:(

4

1 回答 1

0

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

想到以下事情:首先,跟踪 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);
于 2013-10-02T19:44:54.667 回答