Javascript 传单:e.layer不';不能与L.Marker或esri.featurelayer一起工作?
我有一层通过OnEachFeature事件从多边形派生的中心点 我要寻找的行为的第一部分是,当单击与该中心点关联的多边形时,该多边形将改变样式,我已经成功地做到了这一点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
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);
});