Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google Fusion Table多层复选框_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript Google Fusion Table多层复选框

Javascript Google Fusion Table多层复选框,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在使用Google Fusion表创建一个地图,允许用户为单个多边形选择多个颜色选项。在附带的JSFIDLE中,我有一个工作示例: 选中复选框后,区域1具有默认的灰色和红色闭合颜色。我希望打开复选框使区域1变为绿色。因此,区域1可能有3种颜色(灰色、红色或绿色) 我曾尝试将所有图层信息复制到图层2中,但没有成功 谢谢你的建议 函数初始化(){ 变量表ID='1_k6LlHVA4eJSgsZJ0esbImaA1HG_bgT_sdoor0'; var map=new google.maps.m

我正在使用Google Fusion表创建一个地图,允许用户为单个多边形选择多个颜色选项。在附带的JSFIDLE中,我有一个工作示例:

选中复选框后,区域1具有默认的灰色和红色闭合颜色。我希望打开复选框使区域1变为绿色。因此,区域1可能有3种颜色(灰色、红色或绿色)

我曾尝试将所有图层信息复制到图层2中,但没有成功

谢谢你的建议

函数初始化(){
变量表ID='1_k6LlHVA4eJSgsZJ0esbImaA1HG_bgT_sdoor0';
var map=new google.maps.map(document.getElementById('map-canvas'){
中心:新google.maps.LatLng(38.33,-98.76),
缩放:7,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var layer=new google.maps.FusionTablesLayer();
filterMap(图层、表格ID、地图);
//初始化第一层
var firstLayer=new google.maps.FusionTablesLayer({
查询:{
选择“几何体”,
从:“1_k6LlHVA4eJSgsZJ0esbImaA1HG_bgT_sdoor0”
},
styleId:2,
模板ID:2,
地图:地图,
});
google.maps.event.addDomListener(document.getElementById('A'),
“单击”,函数(){
filterMap(图层、表格ID、地图);
});
google.maps.event.addDomListener(document.getElementById('B'),
“单击”,函数(){
filterMap(图层、表格ID、地图);
});
}
//根据复选框选择过滤地图。
函数过滤器映射(图层、表格ID、映射){
var-where=generateWhere();
如果(在哪里){
如果(!layer.getMap()){
图层设置图(map);
}
layer.setOptions({
查询:{
选择“几何体”,
发件人:tableId,
何处:何处
}
});
}否则{
layer.setMap(空);
}
}
//从复选框生成where子句。如果没有盒子
//如果选中,则返回空字符串。
函数generateWhere(){
var过滤器=[];
var stores=document.getElementsByName('store');
for(var i=0,store;store=stores[i];i++){
if(store.checked){
var storeName=store.value.replace(/'/g,'\\'');
filter.push(“'”+storeName+“”);
}
}
var,其中=“”;
if(过滤器长度){
其中(“+filter.join(”,“)+”)中的“'name'”;
}
返回哪里;
}
google.maps.event.addDomListener(窗口“加载”,初始化);
区域1:
关闭
打开
领域2:
关闭
打开

当我阅读您的需求时,您需要的不是多个层,而是一个层需要多个样式

  • 1个选择所有门店的查询
  • 1所有商店的默认样式(灰色)
  • 1款(红色)适用于已关闭的门店
  • 1款开放式商店(绿色)
这不会达到任何限制。示例样式如下所示:

  [ //default
    {"polygonOptions":{"fillColor":"#919191",
                       "fillOpacity":0.5}
    },
    //open
   {"polygonOptions":{"fillColor":"#00ff00"},
    "where":"'name' IN ('names','of','open','stores')"},
    //closed
   {"polygonOptions":{"fillColor":"#ff0000"},
    "where":"'name' IN ('names','of','closed','stores')"}
  ] 

演示:

您知道FusionTablesLayer的限制吗<代码>您可以使用Maps API向地图添加多达五个Fusion Tables图层,其中一个图层最多可以使用五个样式设置规则进行样式设置。我已经了解了这些限制。我的挑战是找出如何将多个层应用于一个形状。如何使用layer.setOptions生成最多5个样式规则?每次我尝试添加第二层时,该层将成为默认颜色,而不是基于复选框选择的可选颜色。该限制表示一次只能设置一个层的样式。文档包括一个示例,其中多个样式规则应用于一个表。您使用3个复选框的示例似乎最符合我的需要。此链接:。我目前正试图修改我在示例中使用的代码,以匹配此方法。Geocode,你能看看这段代码吗?我真的很快就可以做到这一点了。我现在遇到的问题是,我使用的表的样式不适用。如何为每个表插入Styleid,以便我能够选择每个表应有的颜色。在示例的源代码中,我没有看到任何对Styleid的引用。谢谢你带我走了这么远!莫勒博士,这正是我需要的,谢谢!!
  [ //default
    {"polygonOptions":{"fillColor":"#919191",
                       "fillOpacity":0.5}
    },
    //open
   {"polygonOptions":{"fillColor":"#00ff00"},
    "where":"'name' IN ('names','of','open','stores')"},
    //closed
   {"polygonOptions":{"fillColor":"#ff0000"},
    "where":"'name' IN ('names','of','closed','stores')"}
  ]