OpenLayers хранит слой в cookie - PullRequest
0 голосов
/ 07 января 2019

Я реорганизую весь код в модули и столкнулся с проблемой доступа к переменной из iframe.

В основном у меня есть карта, на которой вы можете рисовать объекты, и когда вы хотите распечатать, вы нажимаете на выбранный элемент, и вы импортируете html-файл в iframe с другим JS-файлом, который создает новую карту и импортирует векторный слой, обращаясь к нему. переменная с parent.variable

Теперь я работаю с модулями, поэтому у меня больше нет глобальных переменных, я думал о том, чтобы сохранить переменную в cookie, но она хранит переменную как [объект, объект]

Я пытался использовать JSON.stringify (переменная), но он выдал ошибку

Uncaught TypeError: Converting circular structure to JSON at JSON.stringify

Вот пример, где вы можете увидеть фактическую переменную в консоли браузера при рисовании объекта на карте

Код файла cookie - строка 94

https://codepen.io/sebalaini/pen/rpqYKL?editors=0010

здесь живой проект

https://www.traffwebdemo.co.uk/parking/main.html

здесь код, который я использую для создания слоя (стиль не работает должным образом, но мне все равно, это старый проект, который я повторно использую для этого вопроса)

Msource = new ol.source.Vector();

var myColors = ['red','blue','green', 'yellow'];

var iterator = -1;

function styleFn(f){

var retSytle;

if (iterator == 2){
  iterator =-1
  }
iterator = iterator + 1;

if (typeof(f.get('styledwithcolor')) != 'undefined'){

  retSytle = new ol.style.Style({
        image: new ol.style.Circle({
          radius: 6,
          stroke: new ol.style.Stroke({
            color: 'white',
            width: 2
          }),
          fill: new ol.style.Fill({
            color: f.get('styledwithcolor')
          })
        })
      });
  } else {

  f.set('styledwithcolor',myColors[iterator]);
  retSytle = new ol.style.Style({
        image: new ol.style.Circle({
          radius: 6,
          stroke: new ol.style.Stroke({
            color: 'white',
            width: 2
          }),
          fill: new ol.style.Fill({
            color: myColors[iterator]
          })
        })
      });
  }
  return [retSytle];
 }

var markLayer = new ol.layer.Vector({
  source: Msource,
  style: styleFn
});

Есть ли другой способ получить доступ к этому var из iframe?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...