我的情况:我的地图上有多个不同的图标功能,例如,来自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;
}
}
});
答案 0 :(得分:0)
我可以通过为每个具有特定样式的Cluster创建一个新图层来解决这个问题。 所以我为A创建了一个新的Cluster和Layer,为B创建了一个新的Cluster和Layer。