我正在使用融合表中的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 对象,因此可能存在性能问题。