我正在使用谷歌地图v3和MarkerClustererPlus。
在地图上,我在地点绘制不同颜色的圆圈。这些圆圈代表基于颜色的特定事件。像这样:
var circleColor = {
completed: 'grey',
emergency: 'red',
nonemergency: 'blue,
defconone: 'purple',
defcontwo: 'navy',
// ... and so on.
}
这些颜色和事件是用户定义的。用户只能使用一种颜色,或者他们可以制作具有数百个键/值对的自定义颜色表。其中许多圈子将位于地图上的相同位置。我们正在谈论从堆栈中的2到堆栈中的100。标记为clusterer的地方。
我们对图标进行聚类,以了解圆圈在任何给定浓度下的密度。然而,更重要的是集群的组成。 25个灰色圆圈表示什么都没有,但是24个灰色圆圈和1个红色圆圈是个大问题。
我希望群集上面有一个标签,显示每个群集的构成:
2 (red) // Just a red dot.
3 (grey) // Grey dot.
17 (purple) // Purple dot.
[22] // Normal cluster enumeration icon.
我最接近的是使用MarkerClustererPlus calculator
获取汇总标记列表,并检查该群集的圆圈组成。
var calcSummary = function (markers, numStyles) {
var colorCount = {},
i,
j,
colorKeys;
for (i = 0, j = markers.length; i < j; i++) {
if (!colorCount[markers[i].FlagColor]) {
colorCount[markers[i].FlagColor] = 0;
}
colorCount[markers[i].FlagColor] += 1;
}
console.log(colorCount); // colorCount is what I need
// Needed to not break things.
return {
text: markers.length,
index: 0,
}
};
通常,您可以使用计算器指定要为该群集使用的集合中的哪种样式。这对我来说不起作用的原因是因为事件和颜色是用户定义的。
我认为我需要以某种方式攻击colorCount
变量到群集本身,然后生成一个独立的地图标签(通过画布绘图)并在普通群集图标旁边打开它,然后将其可见性附加到该图标
有没有人有任何建议,无论是替代解决方案,还是我未能遇到的一些文件?