获取类型将图层添加到地图后出错

Getting typeError after adding layer to map

本文关键字:地图 出错 添加 取类型 图层 获取      更新时间:2023-09-26

我出现这种类型的错误:"无法读取 null 的属性'closure_uid_521373967'"。

这发生在我制作尚未包含任何功能的源代码之后。

var vectorSource = new ol.source.Vector({
});    

之后我做了一个图层

var vectorLayer = new ol.layer.Vector({
    source: vectorSource
});

然后我初始化地图:

var map = new ol.Map({
    layers: [new ol.layer.Tile({ source: new ol.source.OSM({url:"http://tile.openstreetmap.org/{z}/{x}/{y}.png"}) }), vectorLayer],
    target: document.getElementById('map'),
    view: new ol.View({
        center: [0, 0],
        zoom: 3
    })
});
当它像

这里一样简单时,它似乎在我的家中工作正常,但是当我尝试让它在我的工作中工作时,斯卡纳里奥有点复杂,我缺少我之前提到的那种类型的错误。

请查看此片段。

    最好将
  1. 图层定义与映射实例化分开。后者使事情变得非常方便,但它使调试变得困难。

  2. 考虑到这一点,我定义了一个OSM层和矢量层,并将两者添加到地图中。

  3. 您不需要使用 getElementById。您只需提供div 的 id 作为映射的目标即可。

  4. 我无法复制您的类型错误。不过,我的怀疑是它来自不必要的getElementById的添加。

您可以发布指向不起作用的代码的链接吗?

// layers
var vectorSource = new ol.source.Vector({
});
var vectorLayer = new ol.layer.Vector({
  source: new ol.source.Vector({
    url: vectorSource,
  })
});
var osmLayer = new ol.layer.Tile({
  source: new ol.source.OSM()
});
var map = new ol.Map({
  layers: [osmLayer, vectorLayer],
  target: 'map',
  view: new ol.View({
    center: [0, 0],
    zoom: 3
  })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.6.0/ol.js"></script>
<body>
  <div id='map'>
  </div>
</body>