1

我正在为在某些位置找到的科学数据创建地图。我已经为每个位置创建了独立的 geoJSON 文件(多边形)和变量,并将它们加载到我的传单地图中,因为我想独立地将图表附加到每个位置的弹出窗口中。

为了让传单搜索工作,我创建了一个新的图层组并将所有位置变量添加到组中,这允许我搜索位置,放大并突出显示它。

当我尝试删除 highlight 时出现我的问题,因为 resetStyle 功能不起作用并且在控制台中显示为“Uncaught TypeError: featuresLayer.resetStyle is not a function”。当我将所有位置作为单个 geoJSON 文件导入时,我没有任何问题,但是我不知道如何为每个位置独立附加图表。

我还尝试使用将颜色从默认更改为绿色,返回默认的代码,但这也失败了,我收到类似的错误:“未捕获的类型错误:无法读取未定义的属性 'setStyle'”

我在下面附上了相关代码:

var featuresLayer = L.layerGroup([location137, location174, location282, location592, location1234, location1303, location1326, location1350, location1364, location1397, location1407, location1521, location1530, location1535, location1576, location1623, location1729, location1731, location1738, location1790, location1804, location1865, location1963, location2090, location2108, location2283, location2307, location2317, location2361, location2386, location2387, location2478, location2490, location2508, location2615, location2718, location2828, location2843, location2867, location2929, location2945]).addTo(map)

var searchbar = new L.Control.Search({
            position:"topright",
            layer: featuresLayer,
            propertyName: "name",
            marker: false,
            textPlaceholder: "Search",
            moveToLocation: function(latlng, title, map) {
            map.setView(latlng, 8); // access the zoom
            }
            });
            
        searchbar.on('search:locationfound', function(e) {
        e.layer.setStyle({fillColor: '#3f0', color: '#0f0'});
    }).on('search:collapsed', function(e) {

        featuresLayer.eachLayer(function(layer) {
            featuresLayer.resetStyle(layer);
        }); 
    });
         map.addControl(searchbar);
4

1 回答 1

1

resetStyle仅与 geoJSON 组合作。

尝试:

var style = {
  weight: 3,
  opacity: 1,
  fill: false,
  color: "#3388ff",
  fill: false,
  fillColor: null,
  fillOpacity: 0.2
}

featuresLayer.eachLayer(function(layer) {
  layer.setStyle(style);
}); 
于 2020-07-04T08:02:38.937 回答