我对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 )等行为),该怎么办?我不知道该怎么做。 :(
答案 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);