@@ -102,11 +102,13 @@ let deviceOnlineIcon;
102102let deviceOfflineIcon;
103103
104104let clusterPokemon = '{ {cluster_pokemon} }' === 'true';
105+ let clusterGyms = '{ {cluster_gyms} }' === 'true';
106+ let clusterPokestops = '{ {cluster_pokestops} }' === 'true';
105107let tileLayer;
106108let nestLayer = new L.LayerGroup();
107109let scanAreaLayer = new L.LayerGroup();
108110let 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