OpenLayers将图层存储在Cookie中

时间:2019-01-07 15:52:37

标签: javascript openlayers

我要将整个代码重构为模块,并且遇到从iframe访问变量的问题。

基本上我有一张地图,您可以在其中绘制特征,当您要打印时,单击选择的项目,然后将iframe中的html文件与另一个JS文件一起导入,以创建新地图并导入矢量层。带有parent.variable的var

现在我正在使用模块,因此不再有全局变量,我当时正在考虑将var存储在cookie中,但是它将var存储为[object,object]

我尝试使用JSON.stringify(variable),但它给了我一个错误

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
});

从iframe访问此var的任何其他方法?

0 个答案:

没有答案