Openlayers 4:如何根据每个群集具有不同图标的功能属性创建群集?

时间:2018-03-08 15:50:20

标签: openlayers openlayers-3

我的情况:我的地图上有多个不同的图标功能,例如,来自A型的两个图标,六个来自B型,三个来自C,位于地图的某个范围内。这些图标代表游戏单元的类型(人员,车辆等) 当我现在按照示例中所述进行聚类时,我会看到我有多少功能,可以按类型过滤它们。但是,因为它显然仍然是同一个集群,所以我只能显示图标A或图标B,而不能同时显示两者。

有没有办法根据每种图标类型构建群集?这可以直接在OpenLayers中使用吗?如果没有,我可以扩展该群集以根据某些特定属性创建它们吗?

let clusterLayer = new VectorLayer({
    name: "clusterlayer",
    zIndex: 230,
    source: clusterSource,
    style: function (feature) {

        let size = feature.get('features').length;
        let featureArray = feature.get('features');

        let countA  = asSequence(featureArray).count(it => it.get("type") === "A");
        if (countA > 2) {


            let style = styleCache[size];
            if (!style) {
                style = //Icon StyleA
                styleCache[size] = style;
            }
            return style;
        }

        let countB = asSequence(featureArray).count(it => it.get("type") === "B");
        if (countB > 1) {
            let style = styleCache[size];
            if (!style) {
                style = //Icon StyleB
                styleCache[size] = style;
            }
            return style;
        }

    }
});

1 个答案:

答案 0 :(得分:0)

我可以通过为每个具有特定样式的Cluster创建一个新图层来解决这个问题。 所以我为A创建了一个新的Cluster和Layer,为B创建了一个新的Cluster和Layer。