2012-10-11 115 views
0

我在下面的代码片段中显示了来自Google地图FusionTablesLayer的区域的边界。多边形已显示,但预期的样式从未应用。我的代码有什么问题?请帮帮我。万分感谢。google.maps.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); 

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

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

您正在使用“旧”风格的语法。如果您想要设计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);