В настоящее время у меня есть слой на карте, и в его источнике определен метод 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);
}
Кто-нибудь знает, почему в моей переменной источника новостей нет метода addFeature?
EDIT
Вот еще мой код:
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.