Skip to content

Commit 75cc0ff

Browse files
authored
Merge pull request #130 from clburlison/add-cluster-options
feat: More cluster options
2 parents 82b79c9 + 9ffd85b commit 75cc0ff

File tree

3 files changed

+61
-25
lines changed

3 files changed

+61
-25
lines changed

src/config.example.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414
"minZoom": 10,
1515
"maxZoom": 18,
1616
"clusters": {
17-
"pokemon": true
17+
"pokemon": true,
18+
"gyms": true,
19+
"pokestops": true,
20+
"zoomLevel": 13
1821
},
1922
"filters": {
2023
"gyms": true,

src/data/default.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ data.pokemon_count = config.map.maxPokemonId;
1212
data.google_analytics_id = config.google.analytics;
1313
data.google_adsense_id = config.google.adsense;
1414
data.cluster_pokemon = config.map.clusters.pokemon;
15+
data.cluster_gyms = config.map.clusters.gyms;
16+
data.cluster_pokestops = config.map.clusters.pokestops;
17+
data.cluster_zoom_level = config.map.clusters.zoomLevel;
1518
data.scouting = config.scouting.enabled;
1619
data.scouting_url = config.scouting.url;
1720
data.scouting_count = config.scouting.maxScouts;
@@ -34,4 +37,4 @@ data.default_show_scanareas = config.map.filters.scanAreas;
3437
data.default_show_devices = config.map.filters.devices;
3538
data.pokemon_rarity_json = JSON.stringify(rarity);
3639

37-
module.exports = data;
40+
module.exports = data;

src/views/index-js.mustache

Lines changed: 53 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,13 @@ let deviceOnlineIcon;
102102
let deviceOfflineIcon;
103103

104104
let clusterPokemon = '{{cluster_pokemon}}' === 'true';
105+
let clusterGyms = '{{cluster_gyms}}' === 'true';
106+
let clusterPokestops = '{{cluster_pokestops}}' === 'true';
105107
let tileLayer;
106108
let nestLayer = new L.LayerGroup();
107109
let scanAreaLayer = new L.LayerGroup();
108110
let clusters = L.markerClusterGroup({
109-
disableClusteringAtZoom: 13,
111+
disableClusteringAtZoom: '{{cluster_zoom_level}}',
110112
removeOutsideVisibleBounds: true
111113
});
112114

@@ -1116,33 +1118,43 @@ function initMap () {
11161118
if (newShowRaids && gym.raid_end_timestamp >= ts) {
11171119
newGymMarkers.push(gym);
11181120
} else {
1119-
map.removeLayer(gym.marker);
1121+
if (clusterGyms) {
1122+
clusters.removeLayer(gym.marker);
1123+
} else {
1124+
map.removeLayer(gym.marker);
1125+
}
11201126
}
11211127
});
11221128

11231129
gymMarkers = newGymMarkers;
11241130
}
11251131
if (newShowPokemon !== showPokemon) {
1126-
if (clusterPokemon) {
1127-
$.each(pokemonMarkers, function (index, pokemon) {
1132+
$.each(pokemonMarkers, function (index, pokemon) {
1133+
if (clusterPokemon) {
11281134
clusters.removeLayer(pokemon.marker);
1129-
});
1130-
} else {
1131-
$.each(pokemonMarkers, function (index, pokemon) {
1135+
} else {
11321136
map.removeLayer(pokemon.marker);
1133-
});
1134-
}
1137+
}
1138+
});
11351139
pokemonMarkers = [];
11361140
}
11371141
if (newShowRaids !== showRaids) {
11381142
$.each(gymMarkers, function (index, gym) {
1139-
map.removeLayer(gym.marker);
1143+
if (clusterGyms) {
1144+
clusters.removeLayer(gym.marker);
1145+
} else {
1146+
map.removeLayer(gym.marker);
1147+
}
11401148
});
11411149
gymMarkers = [];
11421150
}
11431151
if (newShowPokestops !== showPokestops && newShowPokestops === false) {
11441152
$.each(pokestopMarkers, function (index, pokestop) {
1145-
map.removeLayer(pokestop.marker);
1153+
if (clusterPokestops) {
1154+
clusters.removeLayer(pokestop.marker);
1155+
} else {
1156+
map.removeLayer(pokestop.marker);
1157+
}
11461158
});
11471159
pokestopMarkers = [];
11481160
}
@@ -1211,21 +1223,23 @@ function initMap () {
12111223

12121224
pokemonFilter = pokemonFilterNew;
12131225
const newPokemonMarkers = [];
1214-
if (clusterPokemon) {
1215-
$.each(pokemonMarkers, function (index, pokemon) {
1226+
$.each(pokemonMarkers, function (index, pokemon) {
1227+
if (clusterPokemon) {
12161228
clusters.removeLayer(pokemon.marker);
1217-
});
1218-
} else {
1219-
$.each(pokemonMarkers, function (index, pokemon) {
1229+
} else {
12201230
map.removeLayer(pokemon.marker);
1221-
});
1222-
}
1231+
}
1232+
});
12231233
pokemonMarkers = newPokemonMarkers;
12241234

12251235
questFilter = questFilterNew;
12261236
const newPokestopMarkers = [];
12271237
$.each(pokestopMarkers, function (index, pokestop) {
1228-
map.removeLayer(pokestop.marker);
1238+
if (clusterPokestops) {
1239+
clusters.removeLayer(pokestop.marker);
1240+
} else {
1241+
map.removeLayer(pokestop.marker);
1242+
}
12291243
});
12301244
pokestopMarkers = newPokestopMarkers;
12311245

@@ -1246,7 +1260,11 @@ function initMap () {
12461260

12471261
const newGymMarkers = [];
12481262
$.each(gymMarkers, function (index, gym) {
1249-
map.removeLayer(gym.marker);
1263+
if (clusterGyms) {
1264+
clusters.removeLayer(gym.marker);
1265+
} else {
1266+
map.removeLayer(gym.marker);
1267+
}
12501268
});
12511269
gymMarkers = newGymMarkers;
12521270

@@ -1836,7 +1854,11 @@ function loadData () {
18361854
const marker = getGymMarker(gym, ts);
18371855
gym.marker = marker;
18381856
gymMarkers.push(gym);
1839-
gym.marker.addTo(map);
1857+
if (clusterGyms) {
1858+
clusters.addLayer(gym.marker);
1859+
} else {
1860+
gym.marker.addTo(map);
1861+
}
18401862
if (gym.raid_end_timestamp >= ts) {
18411863
startRaidTimer(gym, ts);
18421864
gym.raidTimerSet = true;
@@ -1913,7 +1935,11 @@ function loadData () {
19131935
if (oldPokestop === undefined) {
19141936
pokestop.marker = getPokestopMarker(pokestop, ts);
19151937
pokestopMarkers.push(pokestop);
1916-
pokestop.marker.addTo(map);
1938+
if (clusterPokestops) {
1939+
clusters.addLayer(pokestop.marker);
1940+
} else {
1941+
pokestop.marker.addTo(map);
1942+
}
19171943
if (pokestop.lure_expire_timestamp >= ts) {
19181944
pokestop.willUpdate = true;
19191945
startPokestopTimer(pokestop, pokestop.lure_expire_timestamp, ts);
@@ -2424,7 +2450,11 @@ function startRaidTimer (gym, ts) {
24242450
gymMarkers = gymMarkers.filter(function (obj) {
24252451
return obj.id !== realGym.id;
24262452
});
2427-
map.removeLayer(realGym.marker);
2453+
if (clusterGyms) {
2454+
clusters.removeLayer(realGym.marker);
2455+
} else {
2456+
map.removeLayer(realGym.marker);
2457+
}
24282458
} else {
24292459
realGym.marker.setIcon(getGymMarkerIcon(realGym, ts2 + 1));
24302460
}

0 commit comments

Comments
 (0)