OpenSlayers, переключающий источник ImageStati c, вызывает увеличение памяти примерно на 5 мегабайт. - PullRequest
1 голос
/ 13 февраля 2020

У меня есть 4 карты различий, которые являются файлами PNG. Я использую openlayers для переключения между ними каждые 10 секунд. Вот код:

html div: <div id="map" class="map"></div>

  function myFunctionThatGetsCalledEveryTenSeconds(){
   var mapImage = getTheNextImage();
   setMap(mapImage);
  }

  function setMap(currentMap) {
    $('#map').empty();

    var extent = [0, 0, currentMap.map_width, currentMap.map_height];
    var projection = new ol.proj.Projection({
      code: 'map',
      units: 'pixels',
      extent: extent
    });

    layerImage = new ol.layer.Image({
      source: new ol.source.ImageStatic({
        imageExtent: extent,
        imageLoadFunction: function (image) {
          image.getImage().src = currentMap.image_url;
        }
      }),
      name: "map"
    });

    map = new ol.Map({
      target: 'map',
      logo: false,
      layers: [layerImage],
      controls: ol.control.defaults({
        attribution: false,
        zoom: true,
      }),
      view: new ol.View({
        projection: projection,
        center: ol.extent.getCenter(extent),
        zoom: 3,
        minZoom: 0.5,
        maxZoom: 5
      })
    });
  }

Каждый раз, когда изменяется источник Imagestati c (image.getImage (). Sr c = currentMap.image_url;), Объем памяти, используемой вкладкой браузера, увеличивается примерно на 5 мегабайт. Протестирован chrome браузер. Я использую chrome: // system / для мониторинга использования памяти. В конце концов потребление памяти становится высоким, и вкладка вылетает.

Что я делаю не так?

...