以编程方式更改 FusionTablesLayer 的颜色



我正在使用融合表中的kml将多边形数组读取到Google地图上。我有一个 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);
}
你不能

。目前,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);

你的样式数组只能是 5 个元素,正如我在你问的最后一个问题中提到的

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

相关内容

  • 没有找到相关文章

最新更新