Developing OGC Compliant Web Applications with GeoExt の
3.2. Editing Features and Their Attributes(http://workshops.boundlessgeo.com/geoext/wfs/editing.html)を参考に WFS レイヤのフィーチャと属性を編集できるようにします。
続けて「ol017-nippon_bmi_akiruno_pgis.html」を使います。
---
items.push({
xtype: "editorgrid", // 修正
ref: "featureGrid",
title: "Feature Table",
region: "south",
height: 150,
sm: new GeoExt.grid.FeatureSelectionModel(),
store: new GeoExt.data.FeatureStore({
fields: [
{name: "gid", type: "int"},
{name: "id", type: "string"},
{name: "orggilvl", type: "string"},
{name: "orgmdid", type: "string"},
{name: "category", type: "string"},
{name: "flag", type: "string"},
{name: "type", type: "string"},
{name: "name", type: "string"},
{name: "code", type: "string"}
],
proxy: new GeoExt.data.ProtocolProxy({
protocol: new OpenLayers.Protocol.WFS({
url: "/geoserver/ows",
version: "1.1.0",
featureType: "akiruno_kukaku",
featureNS: "http://www.myhome.net/npn",
srsName: "EPSG:2451"
}),
})
autoLoad: true
}),
columns: [
{header: "gid", dataIndex: "gid"},
{header: "id", dataIndex: "id", editor: {xtype: "textfield"}}, // editor: {xtype: "textfield"} 追加
{header: "orggilvl", dataIndex: "orggilvl", editor: {xtype: "textfield"}},
{header: "orgmdid", dataIndex: "orgmdid", editor: {xtype: "textfield"}},
{header: "category", dataIndex: "category", editor: {xtype: "textfield"}},
{header: "flag", dataIndex: "flag", editor: {xtype: "textfield"}},
{header: "type", dataIndex: "type", editor: {xtype: "textfield"}},
{header: "name", dataIndex: "name", editor: {xtype: "textfield"}},
{header: "code", dataIndex: "code", editor: {xtype: "textfield"}}
],
bbar: []
});
var vectorLayer = new OpenLayers.Layer.Vector("Editable features");
Ext.onReady(function() {
app.mapPanel.map.addLayer(vectorLayer);
app.featureGrid.store.bind(vectorLayer);
app.featureGrid.getSelectionModel().bind(vectorLayer);
});
// コントロールの追加
var modifyControl = new OpenLayers.Control.ModifyFeature(
vectorLayer, {autoActivate: true}
);
var drawControl = new OpenLayers.Control.DrawFeature(
vectorLayer,
OpenLayers.Handler.Polygon,
{handlerOptions: {multi: true}}
);
controls.push(modifyControl, drawControl);
// グリッドが1行だけ選択されていることを確認
Ext.onReady(function() {
var sm = app.featureGrid.getSelectionModel();
sm.unbind();
sm.bind(modifyControl.selectControl);
sm.on("beforerowselect", function() { sm.clearSelections(); });
});
// "Delete" と "Create" ボタン追加
Ext.onReady(function() {
var bbar = app.featureGrid.getBottomToolbar();
bbar.add([{
text: "Delete",
handler: function() {
app.featureGrid.getSelectionModel().each(function(rec) {
var feature = rec.getFeature();
modifyControl.unselectFeature(feature);
vectorLayer.removeFeatures([feature]);
});
}
}, new GeoExt.Action({
control: drawControl,
text: "Create",
enableToggle: true
})]);
bbar.doLayout();
});
</script>
---


0 件のコメント:
コメントを投稿