创建新来源并不能提供addFeature()

时间:2018-04-24 20:50:04

标签: javascript openlayers openstreetmap

我目前在地图上有一个图层,其来源有一个' 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。

0 个答案:

没有答案