gpt4 book ai didi

javascript - 传单:e.layer 不能与 L.Marker 或 esri.featurelayer 一起使用吗?

转载 作者:行者123 更新时间:2023-11-28 04:17:26 25 4
gpt4 key购买 nike

我有一个通过 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

'Uncaught TypeError: Cannot read property 'setStyle' of undefined'  at e.<anonymous> ((index):178)
at e.fire (leaflet.js:5)
at e._fireDOMEvent (leaflet.js:5)
at e._handleDOMEvent (leaflet.js:5)
at HTMLDivElement.r (leaflet.js:5)

我对 Leaflet 发生的事情有点困惑——是否有另一种方法可以让 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);
});

关于javascript - 传单:e.layer 不能与 L.Marker 或 esri.featurelayer 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45702046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com