- 实例:现有一图层服务,现需要动态显示该图层中的一部分内容:点击一个图例,只显示这个图例的内容,再点击别的图例,原来的内容不消失,再次点击已被点击的图例才会消失。
- 思路:setLayerDefinitions可以设置图层的定义,该定义可用于过滤指定图层的
var i,k; var arr=[]; var strWhere=""; var layerDefinitions=[]; //该show方法只是获取点击的图例的值,放入需要查询的数组中,便于拼接 function show(name) { if( name !="" && arr.length==0 ) { arr[0]=name; } else { var m=arr.indexOf(name); if(m<0){ arr.push(name); }else{ arr.splice(m,1); //删除重复的 } } //拼接查询语句 switch (arr.length) { case 0: strWhere ="1=1"; break; default: for(k=0;k<arr.length;k++) { if(k!=0) { strWhere += " or name = '"+arr[k]+"'"; } else{ strWhere="name = '" + arr[k]+"'"; } } break; } require([],function(){ //要查询的那个图的图层的ID号:19 layerDefinitions [19] = strWhere; tunnelLayer.setLayerDefinitions(layerDefinitions); }); }
点击图例