2014-06-05 52 views
2

我有一张地图,其中使用geoJSON加载标记。以编程方式无法打开弹出菜单

当地图加载时,我运行一个函数buildVisibleSys,它负责在地图上建立一个当前可见系统的列表。

这个功能看起来是这样的:

buildVisibleSys = function() { 
    var bounds, visibleSys; 
    visibleSys = []; 
    bounds = map.getBounds(); 
    return systemLocations.eachLayer(function(marker) { 
    var link; 
    link = onScreenEl.appendChild(document.createElement('a')); 
    link.href = '#'; 
    link.id = "marker" + marker._leaflet_id; 
    link.innerHTML = marker.options.title; 
    link.onclick = function() { 
     marker.openPopup(); 
     map.panTo(marker.getLatLng()); 
    }; 
    }); 
}; 
map.on('load', buildVisibleSys); 

在此功能中,对每一层即时得到一些数据,并建设有每个标记的名称的HTML块。每个与link var关联的名称都附有一个onclick事件,该事件将将地图置于对应标记上。除了marker.openPopup()致电我还有onclick事件。

任何想法,我在这里想念什么?

我还提供代码在这里的演示: http://jsfiddle.net/lmartins/z8wBW/

UPDATE: 更加混乱,在我看来,与鼠标悬停同样的方法就没有这个问题,那就是,在上面的函数下面的代码做打开弹出:

link.onmouseover = function(ev) { 
     marker.openPopup(); 
     marker._icon.classList.add('is-active'); 
    }; 

回答

4

更改您的链接处理程序

link.onclick = function(e) { 
    marker.openPopup(); 
    map.panTo(marker.getLatLng()); 
    e.stopPropagation(); 
    e.preventDefault(); 
}; 

点击打开弹出窗口的链接会冒泡到地图并在打开后关闭弹出窗口。

相关问题