google.maps.FusionTablesLayer:未应用样式

时间:2012-10-11 14:12:04

标签: google-maps-api-3 google-fusion-tables

我在下方有一个代码片段,用于显示Google地图FusionTablesLayer中某个区域的边界。显示多边形但从未应用预期的样式。我的代码出了什么问题?请帮我。谢谢你。

var FT_TableID=420419;
var ftoptions = {
        suppressInfoWindows:true,
        styles: [
            {polygonOptions: {fillColor:'#0040FF',fillOpacity:0.1,strokeColor:'#FF0000',strokeWeight:2,strokeOpacity:0.6}}
        ]        
    };  


var layer = new google.maps.FusionTablesLayer(FT_TableID,ftoptions);
layer.setQuery('SELECT \'kml_4326\' FROM 420419 WHERE \'name_0\' = \'Vietnam\';');

layer.setMap(theMap);

感谢您的建议。让我进一步澄清我的情况,为什么我必须以这样的方式编写代码:我为数据库中的每个区域存储了ftquery(以原始格式:SELECT ... FROM ...)并将其加载以绘制区域边界

var ftoptions = {...};
var layer = new google.maps.FusionTablesLayer(tableid);

//to load custom styles, but not work, same for setOptions or set('styles',styles);
layer.setValues(ftoptions);

var ftquery = '';//this is loaded from database
layer.setQuery(ftquery);
layer.setMap(theMap);

我尝试了你的建议,但多边形没有显示。我在某处肯定是错的。谢谢大家的进一步帮助。

1 个答案:

答案 0 :(得分:1)

您正在使用“旧”样式语法。如果要为FusionTablesLayer设置样式,则需要使用documented syntax

var ftoptions = {
        query: {
          from: tableid,
          select: 'kml_4326',
          where: "name_0 = 'Vietnam'"
        },
        suppressInfoWindows:true,
        styles: [
            {polygonOptions: {fillColor:'#0040FF',fillOpacity:0.1,strokeColor:'#FF0000',strokeWeight:2,strokeOpacity:0.6    }}
        ]
    };

var layer = new google.maps.FusionTablesLayer(ftoptions);
layer.setMap(theMap);