将图层添加到地图后获取typeError

时间:2016-02-24 18:45:38

标签: javascript openlayers-3

我去了这种类型的错误: “无法读取属性'closure_uid_521373967'的null”。

在我创建不包含任何功能的源之后会发生这种情况。

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

它似乎在我的家里工作得很好,因为它很简单,但当我试图让它在我的工作中工作时,scanario有点复杂,我缺乏我之前提到的那种错误

1 个答案:

答案 0 :(得分:-1)

请查看此代码段。

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

  2. 考虑到这一点,我定义了一个OSM图层和你的Vector图层,并将它们都添加到地图中。

  3. 您不需要使用getElementById。您只需提供div的id作为地图的目标。

  4. 我无法复制您的TypeError。我怀疑它来自于添加了不必要的getElementById。

  5. 您是否可以发布指向不起作用的代码的链接?

    // 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>