У меня есть карта Yahoo с множеством маркеров (~ 500). Карта работает достаточно хорошо, пока я не закрою страницу, в этот момент она приостанавливается (в Firefox) и выдает «Прекратить запуск этого сценария?» диалог (в IE7). Если задано достаточно долго, скрипт выполняет свою работу.
Что я могу сделать, чтобы уменьшить эту задержку?
Этот урезанный код демонстрирует проблему:
<script type="text/javascript">
var map = new YMap(document.getElementById('map'));
map.drawZoomAndCenter("Algeria", 17);
for (var i = 0; i < 500; i += 1) {
var geoPoint = new YGeoPoint((Math.random()-0.5)*180.0, (Math.random()-0.5)*360.0);
var marker = new YMarker(geoPoint);
map.addOverlay(marker);
}
</script>
Мне известны некоторые утечки памяти в обработчиках событий, если вы динамически добавляете и удаляете маркеры, но они статические (хотя проблема может быть связана). О, и я знаю , что такое количество маркеров на карте может быть не лучшим способом передачи данных, но это не тот ответ, который я ищу;)
Редактировать: Следуя предложенному ниже предложению, я попробовал:
window.onbeforeunload = function() {
map.removeMarkersAll();
}
и
window.onbeforeunload = function() {
mapElement = document.getElementById('map');
mapElement.parentNode.removeChild(mapElement);
}
но ни сработало: (