是否可以统计Leaflet中自定义图标的出现次数?如果是的话,该怎么做?

问题描述 投票:0回答:1

首先,我是一个初学者,我从你身上学到了很多东西。 我定义了 5 个自定义图标:

//Awesome icons
var LeafIcon = L.Icon.extend({
    options: {
        shadowUrl: "markers-shadow.png",
        iconSize:     [35, 45],
        shadowSize:   [36, 16],
        iconAnchor:   [17, 42],
        shadowAnchor: [10, 12],
        popupAnchor:  [1, -32]
    }
});

var blueIcon = new LeafIcon({iconUrl: 'blue.png'});
var greenIcon = new LeafIcon({iconUrl: 'green.png'});
var yellowIcon = new LeafIcon({iconUrl: 'yellow.png'});
var orangeIcon = new LeafIcon({iconUrl: 'orange.png'});
var redIcon = new LeafIcon({iconUrl: 'red.png'});

图标代表施工条件。 当选择overlayMaps时,是否可以计算每个图标出现的次数?对于结果,您需要用结果制作图例并重命名要显示的图标,例如:蓝色 5 次出现、绿色 2 次出现、黄色 12 次出现、橙色 0 次出现和红色 21 次出现。 我很感激您的帮助。

javascript count leaflet icons legend
1个回答
0
投票

您可以迭代地图上(或其他图层,例如要素组)上的标记,并计算使用哪个图标的次数:

function countMarkers(featureGroup) {
    const count = {};
    for (const layer of featureGroup.getLayers()) {
        const icon = layer.getIcon();
        const url = icon.options.iconUrl;
        count[url] = (count[url] || 0) + 1;
    }
    return count;
}

// featureGroup is an instance of L.featureGroup
const result = countMarkers(featureGroup);

// example return: { "blue.png": 3, "orange.png": 1 }
console.log(result);

该示例假设您已将标记添加到

L.featureGroup
实例 (
featureGroup
) 并且您的图标 URL 可以用作 ID。

© www.soinside.com 2019 - 2024. All rights reserved.