2013-03-01 67 views
0

我有一个问题的理解,我有一个点向量和它上面的标签告诉它的$nameOpenLayers复选框删除标签

我现在需要的是一个复选框,当取消选中时隐藏标签。

toggleLabel: function(element) { 
      if(element.value == "showLabel"){ 
       this.viewModel.label.setVisibility(false); 
      } 
      else { 

      } 
     }, 

然后在我的HTML我得到了下面的复选框

<input type='checkbox' name='overlay' value='showLabel' id='showLabels' onclick='toggleLabel(this);' autocomplete='off' checked></input> 

我缺少什么?

编辑:我不想删除整个图层,因为我仍然想要矢量(地图上的点),但只是隐藏标签集。 setvisibility不能在标签上工作吗?

+0

请添加代码,在那里你定义样式($名) - 你使用StyleMap设定为层,直接添加样式功能等 – user1702401 2013-03-01 13:41:24

+0

'VAR defaultStyle = OpenLayers.Util.extend({}的OpenLayers。 Feature.Vector.style [ '缺省']); defaultStyle.label =“$ {”+ this.viewModel.label +“}”;' – WeeklyDad 2013-03-01 14:08:00

+0

PS:假设是两行,但您明白了。 – WeeklyDad 2013-03-01 14:11:19

回答

1

我以前没见过viewModel的东西,但是:为了隐藏标签,你可以将样式的标签设置为空字符串;并将其恢复为显示标签。

// hide label 
haloLayer.styleMap.styles.default.defaultStyle.label = ''; 
haloLayerLayer.redraw();  

// show label 
haloLayer.styleMap.styles.default.defaultStyle.label = "${" + ... + "}"; 
haloLayerLayer.redraw();  
+0

谢谢,我只是好奇我在哪里设置这个,在复选框的电话? – WeeklyDad 2013-03-01 14:43:35

+0

是的,在复选框调用时执行它 - 但我不确定范围,可能不能在'this.viewModel.label'中使用'this' – user1702401 2013-03-01 14:51:17