Skip to content

Commit 3b028ef

Browse files
committed
Markers are now circles. Skips duplicate hits.
1 parent 6e56fd6 commit 3b028ef

1 file changed

Lines changed: 28 additions & 7 deletions

File tree

MMM-BirdNET.js

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ Module.register("MMM-BirdNET", {
99
lon: -76.47363144,
1010
width: '400px',
1111
height: '400px',
12-
zoomLevel: 7
12+
zoomLevel: 7,
13+
markerDistance: 300,
14+
markerColor: 'LightGreen' // distance from map center to put markers
1315
},
1416

1517
start: function () {
@@ -26,6 +28,7 @@ Module.register("MMM-BirdNET", {
2628
this.birdData = {};
2729
this.birdMap = null;
2830
this.markersLayer = new L.layerGroup();
31+
this.locations = [];
2932

3033
this.popupOptions = {
3134
closeButton: false,
@@ -111,6 +114,9 @@ Module.register("MMM-BirdNET", {
111114

112115
this.birdData = JSON.parse(birdData);
113116
var markers = this.markersLayer;
117+
this.locations = [];
118+
var skipped = 0;
119+
var markerRadius = this.birdMap.getZoom() - 2;
114120
markers.clearLayers(); // clear markers ahead of data load
115121

116122
var observations = this.birdData.observations;
@@ -119,21 +125,35 @@ Module.register("MMM-BirdNET", {
119125
var lat = entry.lat;
120126
var lon = entry.lon;
121127
var dist = this.getDistance(this.config.lat,this.config.lon, lat, lon);
122-
if (dist < 300) { // remove entries further than 300 km
128+
if (dist < this.config.markerDistance) { // remove entries further than 300 km
129+
// ensure only one marker per lat/lon to nearest 10th.
130+
var loc_code = ((lat * 5).toFixed(0) / 5) + ";" + ((lon * 5).toFixed(0) / 5);
131+
if (this.locations.includes(loc_code)) {
132+
skipped++;
133+
continue;
134+
} else (this.locations.push(loc_code));
135+
123136
// split species into common & Latin
124137
var species_split = entry.species.split(";");
125138
var name = species_split[0];
126139
var species = species_split[1];
127140
var percent = entry.score;
128141
var ts = entry.ts;
129142

130-
var marker = L.marker([lat, lon]);
143+
// var marker = L.marker([lat, lon]);
144+
var circle = L.circleMarker([lat,lon], {
145+
stroke: false,
146+
fill: true,
147+
fillColor: this.config.markerColor,
148+
radius: markerRadius,
149+
fillOpacity: 1
150+
});
131151
var popup = this.createPopup(name, species, percent, ts);
132-
marker.bindPopup(popup, this.popupOptions);
133-
markers.addLayer(marker);
134-
}
152+
circle.bindPopup(popup, this.popupOptions);
153+
markers.addLayer(circle);
154+
} else { skipped++;}
135155
}
136-
this.schedulePopInterval();
156+
Log.info("Processed " + observations.length + " bird hits. (skipped " + skipped +")");
137157
},
138158

139159
createPopup: function(name, species, percent, ts) {
@@ -256,6 +276,7 @@ Module.register("MMM-BirdNET", {
256276
this.loaded = true;
257277
this.buildMap();
258278
this.updateData();
279+
this.schedulePopInterval();
259280
}
260281
},
261282

0 commit comments

Comments
 (0)