在集群上显示标记的名称onmouseover

时间:2015-06-28 15:43:09

标签: leaflet markerclusterer

我正在尝试显示带有群集标记的地图,用户可以在点击放大之前在鼠标悬停时查看群集中标记的名称。

以下是我一直在研究的例子:http://jsfiddle.net/zvLd54de/4/

意图是伦敦的onmouseover应该显示居住在伦敦的四个人的名字,而巴黎的上午应该显示居住在巴黎的三个人的名字。

到目前为止,我只管理过

  • 显示名称,但适用于地图视图中的所有标记
  • 显示群集中的对象,但不显示名称

的Javascript

markers.on('clustermouseover', function (a) {

    var inBounds = [],
        bounds = map.getBounds();
    children = a.layer.getAllChildMarkers();

    markers.eachLayer(function (marker) {    
        if (bounds.contains(marker.getLatLng())) {
            inBounds.push(marker.options.title);
        }
    });

    document.getElementById('names').innerHTML = inBounds.join('\n');
    document.getElementById('children').innerHTML = children.join('\n');    
});

markers.on('clustermouseout', function (a) {
    document.getElementById('names').innerHTML = ('');
    document.getElementById('children').innerHTML = ('');
});

我认为我在某种程度上需要调整if语句,以便它只推送集群中的名称,但是还没有找到。

如果有人知道如何做到这一点,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

经过多次尝试后,我找到了解决方案。

可以在http://jsfiddle.net/zvLd54de/5/查看更新的示例。

我希望这对其他人也有用。

markers.on('clustermouseover', function (a) {

    children = a.layer.getAllChildMarkers();
    var names = [];

    for (i = 0; i < children.length; i++) {
        names.push(children[i].options.title);
    }

    document.getElementById('names').innerHTML = names.join('\n');  
});