0

我正在使用融合表中的 kml 将一组多边形读入谷歌地图。我有一个 4 种颜色的数组,我想以编程方式为这 4 种颜色中的一种多边形着色,具体取决于另一个数组中的值。

不知何故,地图一次只能着色 4 个多边形,即使我指定只有 4 种样式。如何为所有 130 个多边形着色?

这是我的代码:

function setInitialStyles() {
layer = new google.maps.FusionTablesLayer({
      map : map,
      query : {
        select : "geometry",
        from : "1gwSN6n_00uZ7YuAP7g4FiUiilybqDRlRmWJrpvA"
      }
    });

var options = {
      styles : [
      {
        polygonOptions:
        {
            fillColor: "#ffffff",
            strokeColor: "#bcbcbc",
            fillOpacity: ".75"
        }
    }
    ]
    };

var styles = [];

var style1 = candColor[0];
var style2 = candColor[1];  
var style3 = candColor[2];  
var style4 = candColor[3];  

for (var i=0;i<countyCodes.length; i++) {
  var c = countyCodes[i];
  var whereClause = "'COUSUBFP' = " + c;
  var myStyle;
  if (countyColors[i] == "#0D58A6" ) { myStyle = style1; }
  if (countyColors[i] == "#981400" ) { myStyle = style2; }
  if (countyColors[i] == "#E3D132" ) { myStyle = style3; }
  if (countyColors[i] == "#007F37" ) { myStyle = style4; }

  options.styles.push({
          where: whereClause,
          polygonOptions: {
            fillColor: myStyle
          }
    });

}


 layer.setOptions(options);
}
4

2 回答 2

1

你不能。目前 FusionTablesLayer 仅限于一个样式图层,最多可能有五个应用样式。请参阅有关FusionTablesLayer 限制的文档。

WHERE您可以定义应用于所有多边形的通用样式规则(如子句)。但同样:您只能定义 5 个这样的规则。

layer = new google.maps.FusionTablesLayer({
  query: {
    select: 'geometry',
    from: '1gwSN6n_00uZ7YuAP7g4FiUiilybqDRlRmWJrpvA'
  },
  styles: [{
    polygonOptions: {
        fillColor: "#ffffff",
        strokeColor: "#bcbcbc",
        fillOpacity: ".75"
    }
  }, {
    where: "population < 1000",
    polygonOptions: {
      fillColor: "#0000FF"
    }
  }, {
    where: "population > 10000",
    polygonOptions: {
      fillOpacity: 1.0
    }
  }]
});
layer.setMap(map);
于 2012-12-04T14:35:28.363 回答
1

正如我在上一个问题中提到的那样,您的样式数组只能是 5 个元素

这种方法(使用 Fusion Tables API v1,当前在名称上匹配,而不是 COUSUBFP,因为您的原始表不包含该列)可能对您有用,但它将多边形呈现​​为本机 Google Maps API v3 对象,所以有可能是性能问题。

于 2012-12-04T14:38:05.727 回答