我去了这种类型的错误: “无法读取属性'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有点复杂,我缺乏我之前提到的那种错误
答案 0 :(得分:-1)
请查看此代码段。
将图层定义与地图实例化分开是个好主意。后者使事情变得非常方便,但它使调试变得困难。
考虑到这一点,我定义了一个OSM图层和你的Vector图层,并将它们都添加到地图中。
您不需要使用getElementById。您只需提供div的id作为地图的目标。
我无法复制您的TypeError。我怀疑它来自于添加了不必要的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>