Google根据群集内容映射markerclusterer自定义图标

时间:2015-01-13 13:27:50

标签: google-maps google-maps-api-3 markerclusterer

我正在使用谷歌地图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变量到群集本身,然后生成一个独立的地图标签(通过画布绘图)并在普通群集图标旁边打开它,然后将其可见性附加到该图标

有没有人有任何建议,无论是替代解决方案,还是我未能遇到的一些文件?

0 个答案:

没有答案