Google Maps Fusion Table API多字段比较与多边形着色问题
解决Fusion Tables多边形按列数值比较上色的问题
嘿,我来帮你搞定这个Fusion Tables图层的颜色规则问题!你要实现的是当某一列数值大于另外两列时,对应多边形显示不同颜色,这个可以通过FusionTablesLayer的条件样式来实现,具体思路和代码示例如下:
核心思路
我们需要在styles数组中为每一种“某列数值领先”的情况单独设置样式规则,通过where参数指定判断条件,Fusion Tables会自动匹配符合条件的多边形并应用对应的样式。
完整代码示例
替换你原来的styles部分,用下面的配置就能实现需求:
layer = new google.maps.FusionTablesLayer({ query: { select: 'geometry', from: tableId }, templateId: 2, styles: [ // 当MURATURAPORTANTE大于另外两列时,用红色填充 { where: "MURATURAPORTANTE > CALCESTRUZZOARMATO AND MURATURAPORTANTE > ALTROMATERIALE", polygonOptions: { fillColor: '#FF0000', fillOpacity: 0.7, strokeColor: '#000000', strokeWeight: 1 } }, // 当CALCESTRUZZOARMATO大于另外两列时,用绿色填充 { where: "CALCESTRUZZOARMATO > MURATURAPORTANTE AND CALCESTRUZZOARMATO > ALTROMATERIALE", polygonOptions: { fillColor: '#00FF00', fillOpacity: 0.7, strokeColor: '#000000', strokeWeight: 1 } }, // 当ALTROMATERIALE大于另外两列时,用蓝色填充 { where: "ALTROMATERIALE > MURATURAPORTANTE AND ALTROMATERIALE > CALCESTRUZZOARMATO", polygonOptions: { fillColor: '#0000FF', fillOpacity: 0.7, strokeColor: '#000000', strokeWeight: 1 } }, // 处理并列或无领先列的情况(默认样式,比如灰色) { polygonOptions: { fillColor: '#CCCCCC', fillOpacity: 0.5, strokeColor: '#000000', strokeWeight: 1 } } ] });
关键注意事项
- 列名匹配:
where条件里的列名必须和你的Fusion Table中的列名完全一致,包括大小写,否则条件会不生效。 - 样式顺序:Fusion Tables会从上到下依次匹配样式规则,所以要把具体的条件规则放在前面,默认样式放在最后。
- 并列情况处理:如果存在两列数值相等且都大于第三列,或者三列数值都相等的情况,上面的前三个条件都不会匹配,会自动使用最后的默认样式。如果你想给并列情况单独设置颜色,可以在默认样式前添加额外的规则,比如:
// 处理MURATURAPORTANTE和CALCESTRUZZOARMATO并列领先的情况 { where: "MURATURAPORTANTE = CALCESTRUZZOARMATO AND MURATURAPORTANTE > ALTROMATERIALE", polygonOptions: { fillColor: '#FFFF00', // 黄色 fillOpacity: 0.7, strokeColor: '#000000', strokeWeight: 1 } } - 颜色自定义:你可以根据需求替换
fillColor的值,支持十六进制、RGB、RGBA或标准颜色名称。
内容的提问来源于stack exchange,提问作者Andrea G.
相关产品推荐
相关产品推荐

