我目前在地图上有一个图层,其来源有一个' addFeature()'方法定义。我创建了一个函数,它应该向图层组添加新的源/图层,但是新的源不具有相同的“addFeature()'方法。这是我的代码:
function newLayer() {
var newsource = new ol.source.Vector({
wrapX: false
});
var newVector = new ol.layer.Vector({
source: newsource,
title: document.getElementById("layerName").value
});
vectorGroup.getLayers().getArray().push(newVector);
}
有人知道为什么我的newsource变量没有addFeature方法吗?
修改 这是我的更多代码:
var map = new ol.Map({
target: 'map',
layers: [raster],
view: new ol.View({
center: ol.proj.transform(
[-84.387314, 33.749249], 'EPSG:4326', 'EPSG:3857'),
zoom: 15
})
});
我有一个按钮newLayer函数,当用户按下按钮时会触发该函数,以便他们可以创建一个新图层。
function newLayer() {
var newsource = new ol.source.Vector({
wrapX: false
});
var newvector = new ol.layer.Vector({
source: newsource,
title: title,
visible: true
});
map.addLayer(newvector);
vector = newvector;
}
这就是我处理绘图到地图的方式:
var draw; // global so we can remove it later
function addInteraction() {
var value = typeSelect.value;
if (value !== 'None') {
draw = new ol.interaction.Draw({
source: source,
type: typeSelect.value
});
map.addInteraction(draw);
}
}
/**
* Handle change event.
*/
typeSelect.onchange = function() {
map.removeInteraction(draw);
addInteraction();
};
addInteraction();
我在这里听一下要添加到我的矢量源中的绘图:
vector.getSource().on('addfeature', function(event) {...};
我能够创建多个图层但是当我尝试在不同的图层上绘制时,它只会绘制到第一个图层。例如,如果我有两个图层,a和b,并选择使用b作为我的'向量'变量,绘制它仍然会将该特征推到a而不是b。