关于graphic.visible = false 设置无效的问题

我用hittest,拿到当前鼠标点击的featurelayer图层,需求就是要把鼠标点击的这一部分图层隐藏, 我设置graphic.visible = false,控制台打印visible 已经修改为false,但是图层却没有隐藏。
控制台打印结果如图
捕获.PNG

有没有大佬知道为什么的,求解答。
已邀请:

邱明昆

赞同来自: 无is 许丹石

因为返回的graphic属于原图层的复制,更改隐藏不会影响原图层的隐藏。
有个实现思路:使用查询得到原图层的geometry,鼠标点中的geometry与原图层的geometry做判断,相等则设置symbol颜色为透明,否则为原图层的颜色。同时移除原图层。这样就实现了点中的部分隐藏的效果。
  
      view.on("click", function (event) {
        view.hitTest(event).then(function (response) {
          console.log(response.results.length)
          if (response.results.length) {
            var graphic = response.results;
            var query = layer.createQuery();
            query.outFields = ["*"];
            query.returnGeometry = true;
            query.where = "1=1";
            var querytask = new QueryTask("https://localhost:6443/arcgis/ ... 6quot;);
            querytask.execute(query).then(function (result) {
              var features = result.features;
                for(var i = 0;i<features.length;i++){
                  if(graphic[0].geometry !=features[i].geometry)
                  view.graphics.add(new Graphic(features[i].geometry,{
                    type:'simple-line',
                    color:[0,0,0,1]
                  }))
                  else{
                    view.graphics.add(new Graphic(features[i].geometry,{
                    type:'simple-line',
                    color:[255,0,0,0]
                  }))
                  }
                  map.layers.removeAll()
                }
            })
          }
        })

AriaGIS

赞同来自:

隐藏错对象了吧,不是要隐藏点中的featurelayer么,要用https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#visible 这个吧

要回复问题请先登录注册