1
난이 :OpenLayers.Protocol.HTTP를 사용하여 커밋 레이어를 변경하는 방법은 무엇입니까?
내가 사용 GeoExt.MapPanel에 (... 생성, 삭제)이 레이어 편집 var saveStrategy = new OpenLayers.Strategy.Save();
var vector = new OpenLayers.Layer.Vector("vector", {
projection: mercator,
strategies: [new OpenLayers.Strategy.Fixed(), saveStrategy],
protocol: new OpenLayers.Protocol.HTTP({
url: "/test/dtp_json.php",
format: new OpenLayers.Format.GeoJSON()
})
});
var store = new GeoExt.data.FeatureStore({
fields: [
{name: "dtp", type: "string", convert: dtpname},
{name: "date", type: "date"},
{name: "fio", type: "string"},
{name: "human", type: "long", defaultValue: 0},
{name: "place", type: "string"},
{name: "opisanie", type: "string"}
],
layer: vector,
addFeatureFilter: function(feature) {
return feature.state !== OpenLayers.State.DELETE;
}
});
:
var modifyControl = new OpenLayers.Control.ModifyFeature(vector);
var drawControl = new OpenLayers.Control.DrawFeature(
vector,
OpenLayers.Handler.Point,
{handlerOptions: {multi: false}}
);
..........(new GeoExt.MapPanel)
id: "mapPanel",
bbar: [
new GeoExt.Action({
control: drawControl,
text: "Create",
enableToggle: true,
},
handler: function() {
var gV = gridPanel.getView();
gV.on('rowsinserted', function(view,firstRow,lastRow)
{
gridPanel.getSelectionModel().selectLastRow();
gridPanel.startEditing(lastRow,0);
});
}
}),
{
text: "Delete",
handler: function() {
gridPanel.getSelectionModel().each(function(rec) {
var feature = rec.get("feature");
modifyControl.unselectFeature(feature);
gridPanel.store.remove(rec);
if (feature.state !== OpenLayers.State.INSERT) {
feature.state = OpenLayers.State.DELETE;
vector.addFeatures([feature]);
};
})
}},
............
방법 (커밋) 모든 변경 사항 저장을? 이 저장하지 :
store.commitChanges();
saveStrategy.save();
내가 protocol.WFS (Geoserver)없이 수행 할 수 있습니다. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX