Javascript 传单:e.layer不';不能与L.Marker或esri.featurelayer一起工作?

Javascript 传单:e.layer不';不能与L.Marker或esri.featurelayer一起工作?,javascript,leaflet,esri,esri-leaflet,Javascript,Leaflet,Esri,Esri Leaflet,我有一层通过OnEachFeature事件从多边形派生的中心点 我要寻找的行为的第一部分是,当单击与该中心点关联的多边形时,该多边形将改变样式,我已经成功地做到了这一点 var ProjectMap = L.esri.featureLayer ({ url: 'https://services.arcgis.com/2gdL2gxYNFY2TOUb/arcgis/rest/services/NECSC_Test_Data/FeatureServer/1', //makin

我有一层通过OnEachFeature事件从多边形派生的中心点

我要寻找的行为的第一部分是,当单击与该中心点关联的多边形时,该多边形将改变样式,我已经成功地做到了这一点

var ProjectMap = L.esri.featureLayer ({
      url: 'https://services.arcgis.com/2gdL2gxYNFY2TOUb/arcgis/rest/services/NECSC_Test_Data/FeatureServer/1',
      //making the polygons invisible
      weight: 0,
      fillOpacity: 0,


      onEachFeature: function(feature,layer){
        if (feature.geometry.type = 'Polygon') {

          var bounds = layer.getBounds();
          var center = bounds.getCenter();


          var centerpoints = L.marker(center);
          centerpointlayer.addLayer(centerpoints);


          centerpoints.on('click', function(e) {
            map.fitBounds(bounds);
            layer.setStyle({
              fillOpacity: 0.5,
            });
            info.update(layer.feature.properties);
          });

        };
      }

    }).addTo(map);
我想要的行为的第二部分是,当单击不同的中心点时,任何先前单击的多边形都可以重置其样式。我无法使用e.target和e.layer以及GeoJSON resetStyle方法实现这一点,正如本文中许多其他线程所建议的那样

      [...]

      var selected

      centerpoints.on('click', function(e) {
        if (selected){
          e.target.resetStyle(selected)
        }
        selected = e.layer
        map.fitBounds(bounds);
        selected.setStyle({
          fillOpacity: 0.5,
        });
        info.update(layer.feature.properties);
      });
控制台在selected.setStyle({of

'UncaughtTypeError:无法读取e.((索引):178)处未定义的属性'setStyle'
在e.fire(传单js:5)
在e.(U fireDOMEvent)(传单js:5)
在e.(U handleDOMEvent)(传单js:5)
在htmldevelment.r(传单js:5)

我有点被传单搞糊涂了——是否有其他方法可以让esri.feature.layer重置为默认样式,然后在单击时更改所选中心点多边形组合的样式?

我认为您需要听图层上的单击事件,而不是标记

centerpointlayer.on('click', function(e) {
    if (selected){
      e.target.resetStyle(selected)
    }
    selected = e.layer
    map.fitBounds(bounds);
    selected.setStyle({
      fillOpacity: 0.5,
    });
    info.update(layer.feature.properties);
  });

谢谢!这不会导致抛出错误,但也会生成map.FitBounds、info.update等。然后,当我需要将其应用于esri.featurelayer中的多边形时,将其应用于标记。这为我提供了创建全局变量或函数的想法,该变量或函数可以用作esri.featurelayer中选定层的容器可以从centerpointlayer上的单击事件调用,等等。。。
centerpointlayer.on('click', function(e) {
    if (selected){
      e.target.resetStyle(selected)
    }
    selected = e.layer
    map.fitBounds(bounds);
    selected.setStyle({
      fillOpacity: 0.5,
    });
    info.update(layer.feature.properties);
  });