计算传单中图层中的标记并将其添加到 div
Counting markers in a layer in leaflet and add it to a div
我有一张带有标记和过滤器(复选框)的传单地图,我想随着过滤器的变化计算标记的数量。
我添加了我在这里找到的代码 Getting the count of markers in a layer in leaflet :
var counter = 0;
function onEachFeature(feature, layer) {
counter++;
console.log(counter)
}
L.geoJson(geojsonFeature, {
onEachFeature: onEachFeature
}).addTo(map);
代码运行良好,但 returns NaN 属性。我想知道是否有办法达到计数器结果,因为我想将它插入到我的 Leaflet 地图的 div 中?
非常感谢!
我试过了。它确实给了我正确的数字,但我仍在修改如何将它放入 L.control
var lg_cityMarkers = L.layerGroup([romaMarker, fidenaeMarker, antemnaeMarker, caeninaMarker, politoriumMarker]);
var totalCities = lg_cityMarkers.getLayers().length;
alert(totalCities);
您可以在此页面上实时查看:https://elcuentoderoma.com/rome/
免责声明:我隶属于该网站。
第一个问题是,你有 geojson 特征/geojson 组还是只有标记?
如果您有 GeoJSON 组:
最简单的方法是获取 geojson 组的所有子图层,即标记数:
var group = L.geoJson(geojsonFeature, {
onEachFeature: onEachFeature
}).addTo(map);
var counter = group.getLayers().length;
如果地图上只有标记(不在一组中):
您可以循环遍历地图的所有图层并检查地图上是否存在该图层:
var counter = 0;
map.eachLayer((layer)=>{
if(layer instanceof L.Marker){
counter++;
}
});
将数据显示为控件
L.MarkerCounterControl = L.Control.extend({
options: {
position: 'topright'
//control position - allowed: 'topleft', 'topright', 'bottomleft', 'bottomright'
},
onAdd: function (map) {
var container = L.DomUtil.create('div', 'leaflet-bar leaflet-control fitall');
this.button = L.DomUtil.create('a', '', container);
this.button.style.width = 'auto';
this.button.style.padding = '2px 5px';
this.button.innerHTML = '0 Markers';
L.DomEvent.disableClickPropagation(this.button);
return container;
},
setCount(count) {
this.button.innerHTML = count+' Markers';
}
});
var control = new L.MarkerCounterControl().addTo(map)
control.setCount(10)
每次换层后都可以调用control.setCount(counter)
我有一张带有标记和过滤器(复选框)的传单地图,我想随着过滤器的变化计算标记的数量。
我添加了我在这里找到的代码 Getting the count of markers in a layer in leaflet :
var counter = 0;
function onEachFeature(feature, layer) {
counter++;
console.log(counter)
}
L.geoJson(geojsonFeature, {
onEachFeature: onEachFeature
}).addTo(map);
代码运行良好,但 returns NaN 属性。我想知道是否有办法达到计数器结果,因为我想将它插入到我的 Leaflet 地图的 div 中?
非常感谢!
我试过了。它确实给了我正确的数字,但我仍在修改如何将它放入 L.control
var lg_cityMarkers = L.layerGroup([romaMarker, fidenaeMarker, antemnaeMarker, caeninaMarker, politoriumMarker]);
var totalCities = lg_cityMarkers.getLayers().length;
alert(totalCities);
您可以在此页面上实时查看:https://elcuentoderoma.com/rome/
免责声明:我隶属于该网站。
第一个问题是,你有 geojson 特征/geojson 组还是只有标记?
如果您有 GeoJSON 组:
最简单的方法是获取 geojson 组的所有子图层,即标记数:
var group = L.geoJson(geojsonFeature, {
onEachFeature: onEachFeature
}).addTo(map);
var counter = group.getLayers().length;
如果地图上只有标记(不在一组中):
您可以循环遍历地图的所有图层并检查地图上是否存在该图层:
var counter = 0;
map.eachLayer((layer)=>{
if(layer instanceof L.Marker){
counter++;
}
});
将数据显示为控件
L.MarkerCounterControl = L.Control.extend({
options: {
position: 'topright'
//control position - allowed: 'topleft', 'topright', 'bottomleft', 'bottomright'
},
onAdd: function (map) {
var container = L.DomUtil.create('div', 'leaflet-bar leaflet-control fitall');
this.button = L.DomUtil.create('a', '', container);
this.button.style.width = 'auto';
this.button.style.padding = '2px 5px';
this.button.innerHTML = '0 Markers';
L.DomEvent.disableClickPropagation(this.button);
return container;
},
setCount(count) {
this.button.innerHTML = count+' Markers';
}
});
var control = new L.MarkerCounterControl().addTo(map)
control.setCount(10)
每次换层后都可以调用control.setCount(counter)