我创建了我的geojson图层:
var gjlayer = new ol.layer.Vector({
title: 'My Layer',
source: new ol.source.Vector({
url: '/path-to-my-geojson-file',
format: new ol.format.GeoJSON()
})
});
当我点击从gjlayer中绘制的多边形时,我改变了我想改变的属性:
var feature = mc.map.forEachFeatureAtPixel(evt.pixel,
function(feature, layer) {
return feature;
});
if (feature) {
feature.set('newproperty', 'new');
};
问题是,这个'feature.set'似乎并没有真正改变gjlayer。如果我注销该功能并尝试将其设置为onclick它会根据属性更改颜色,它似乎可以工作,但问题是gjlayer中的相同多边形看起来保持不变...所以如果我清除地图和'redraw'gjlayer,造型和属性都没有。
我希望如果我清除了地图,并且“读取”了gjlayer,那么具有'newproperty'的功能就会出现。
答案 0 :(得分:0)
你是什么意思,'清除地图',你创建一个新地图吗?据我所知,你的vectorlayer只在它添加到map-object期间保存信息。如果你要创建一个新的或者将vectorlayer附加/分离到mapobject,我想你会丢失这些信息。
更新:关于OP的评论:
//Get Current Features from old vector layer
var oldFeatures = oldVectorLayer.getSource().getFeatures();
//Create a new source and add oldFeatures to this source
var newVectorLayerSource = new ol.source.Vector({
features: oldFeatures
});
//create new vector layer and add new vector Source
var newVectorLayer = new ol.layer.Vector({
source: newVectorLayerSource
});
//if your vectorlayer already exist you can use set Source,
//but the old source will be overwritten
alreadyExistingVectorLayer.setSource(newVectorLayerSource);
//If you want to add the feature to an existing source use:
alreadyExistingVectorLayer.getSource().addFeatures(oldFeatures)
要获得进一步的帮助,我需要更多信息,你想做什么:-) 我认为你的Vectorsource集合上有一些eventlistener可以更容易地保存你的问题。
答案 1 :(得分:0)
如果要保存对GeoJSON图层所做的更改,则需要使用WFS事务,可能需要MapServer或GeoServer。