У меня есть 4 разных типа маркеров на одной карте. В настоящее время слайд-шоу чередуется между каждым типом, скрывая остальные 3. Существует объект MarkerClusterer для каждого отдельного типа маркера, чтобы они не группировались вместе.
Проблема, с которой я сталкиваюсь, заключается в том, что снимок кучи в chrome показывает, что я увеличиваю объем используемой памяти примерно на 2 МБ каждые 5 минут или около того. Это мой код в настоящее время:
function transitionMarkers() {
if (isSlideShowActive) {
for (var i = 0; i < markers.length; i++) {
if (nutrientsArray[slideShowCounter] === markers[i].address.SOURCE_GROUP) {
markers[i].setVisible(true);
} else {
markers[i].setVisible(false);
}
}
for (var n in types.NUTRIENTS) {
for (var sc in types.SOURCE_CODES) {
if (nutrientsArray[slideShowCounter] === n) {
markerClusters[n][sc].setMap(map);
} else {
markerClusters[n][sc].setMap(null);
}
}
}
}
incrementSlideShowCounter();
}
Маркеры имеют возможность изменять свою видимость, и, поскольку они будут перерисованы в течение минуты, я не беспокоюсь об использовании для них setMap(null). Однако кластеры маркеров не имеют такой возможности. Когда я изучаю снимок кучи, я вижу тысячи объектов, которые выглядят так:
[1076] :: pf @2451465 5 360 % 2 3360 %
b :: gi @2273271 2 120 % 170 5441 %
e :: function() @2454527 6 360 % 2 3000 %
< strong>proto :: pf @2338839 5 120 % 360 %
d :: "bounds_changed" @67519
Похоже, что там накапливаются тысячи этих событий bounds_changed... моя карта только скрывает или показывает маркеры, она не перемещается, не увеличивается или не уменьшается или что-то в этом роде.
есть идеи?