[Spanish] OpenLayers - salvar nuevo feature en Base de Datos
Javier Diaz
javidiaz1977 at gmail.com
Wed Sep 9 12:17:05 PDT 2015
console.log(g_send);
Firebug me da este resultado:
{"type":"Feature","properties":{"id":0,"cir":"I","sec":"","tipo":"","manz":"","parc":"","nomenclatu":""},"geometry":{"type":"MultiPolygon","coordinates":[[[[-6500498.2250645,-4119511.3479142],[-6500485.3860324,-4119499.4046285],[-6500477.9214789,-4119503.2861964],[-6500484.1917039,-4119513.4379892],[-6500498.2250645,-4119511.3479142]]]]},"crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}
En otro hilo seguramente voy a molestarlos sobre como manipular el
resultado para guardarlo en mi tabla postgis.
Gracias
Javier
El 9 de septiembre de 2015, 16:13, Javier Diaz <javidiaz1977 en gmail.com>
escribió:
> Finalmente la función gurdarCambios quedó así:
>
> function guardarCambios() {
> var gridMask = new Ext.LoadMask(gridPanel2.getEl(),{msg:'Guardando los cambios...'});
> gridMask.show();
> var records = mapstore.getModifiedRecords();
> if(!records.length) {
> return;
> }
> var dataToSend = [];
>
> Ext.each(records, function(r, i) {
> var o = r.getChanges();
> console.log(r.data.feature);
>
>
> if(r.data.newRecord) {
> o.newRecord = true;
> }
>
> o[primaryKey] = r.get(primaryKey);
> g = new OpenLayers.Format.GeoJSON();
> g_send = g.write(r.data.feature);
>
> dataToSend.push(o);
> dataToSend.push(g_send);
> console.log(g_send);
>
> delete r.data.newRecordId;
> }, this);
>
> // EL CONTENIDO DE LA VARIABLE "O" SE ENVIARA MEDIANTE AJAX
> //console.log(records);
>
> //var g = new OpenLayers.Format.GeoJSON();
> //console.log(g);
> //var geoJSONText = g.write(vecLayer.features);
> //console.log(geoJSONText);
>
> dataToSend = Ext.encode(dataToSend); // step 4
>
> var o = {
> url: './php/guardar2.php'
> ,method:'POST'
> ,scope:this
> ,timeout: 100000
> ,params: {data: dataToSend
> //data: Ext.encode(data)
> //geom: Ext.encode(data.feature.geometry)
> }
> ,callback: function (options, success, response) {
> gridMask.hide();
> var json = Ext.util.JSON.decode(response.responseText);
> if (json.success) {
> mapstore.commitChanges();
> }else{
> Ext.MessageBox.show({
> title: 'Error',
> msg: json.mensaje,
> buttons: Ext.MessageBox.OK,
> icon: Ext.MessageBox.ERROR
> });
> }
> }
> };
> Ext.Ajax.request(o);
> }
> //FIN FUNCION gurdarCambios
>
>
>
> 2015-09-08 12:04 GMT-03:00 Javier Diaz <javidiaz1977 en gmail.com>:
>
>> Buen dia Lista.
>>
>> Necesito guardar un geojson (capa vector de OpenLayers) a PostGIS, via
>> Ajax y PHP
>>
>> Estoy trabajando con OpenLayers y GeoExt.
>>
>> La carga en el visor desde la Base de Datos se realiza sin problemas.
>> El resultado de la query (en formato geojson) se carga en un Grid y en
>> una capa (vecLayer). Hasta aquí todo bien.
>>
>> El problema es cuando agrego una nueva geometria. Dibujo el poligono,
>> cargo los datos en el grid y guardo. Los datos del grid se guardan
>> correctamente (nuevamente via ajax y php a la BD), pero no consigo agregar
>> los datos de la nueva geometria a los enviados desde el grid.
>>
>> Acá las partes mas importantes del js.
>>
>> //La capa donde voy a cargar el resultado de la consulta, editar y
>> modificar geometrias.
>> var vecLayer = new OpenLayers.Layer.Vector("Vectors");
>>
>> map.addLayers([layerMapnik, myBaseLayer, ghyb, vecLayerCirc,
>> vecLayerSecc, vecLayerManz, vecLayer]);
>>
>> //El Store para el Grid.
>>
>> var mapstore = new GeoExt.data.FeatureStore({
>> method: 'POST',
>> baseParams:{envio: "ListarGrid"},
>> layer: vecLayer, //ACA defino la capa donde voy a visualizar el
>> GeoJSON
>> strategies: [new OpenLayers.Strategy.Fixed()],
>> proxy: new GeoExt.data.ProtocolProxy({
>> protocol: new OpenLayers.Protocol.HTTP({
>> url: './php/aca_mi_archivo.php',
>> format: new OpenLayers.Format.GeoJSON()
>> })
>> }),
>> fields: [
>> {name: primaryKey, type: 'int'},
>> {name: 'cir', type: 'string'},
>> ......
>> ],
>> autoLoad: true
>> });
>>
>> var gridPanel2 = new Ext.grid.EditorGridPanel({
>> title: "Feature Grid",
>> region: "south",
>> method: 'POST',
>> store: mapstore,
>> width: 900,
>> height: 250,
>> split : true,
>> collapsed: true,
>> collapseMode: "mini",
>> cm: new Ext.grid.ColumnModel({
>> defaults: {
>> sortable: true,
>> editor: {xtype: "textfield"}
>> },
>> columns: [
>> {header: "id", width: 50, dataIndex: "id", hidden
>> : true},
>> {header: "cir", width: 50, dataIndex: "cir"},
>> .........
>>
>> var drawControl = new OpenLayers.Control.DrawFeature(vecLayer,
>> OpenLayers.Handler.Polygon,
>> {handlerOptions: {multi: true}}
>> );
>>
>> var modifyControl = new OpenLayers.Control.ModifyFeature(vecLayer , {
>> displayClass: "olControlModifyFeature", title: "Modify Feature"});
>>
>> //Agrego los el control para modificar la geometria
>> mapPanel.map.addControl(modifyControl);
>> modifyControl.activate();
>>
>> En el Botón "save" tengo asignada la función guardarCambios()
>>
>> function guardarCambios() {
>> var gridMask = new
>> Ext.LoadMask(gridPanel2.getEl(),{msg:'Guardando los cambios...'});
>> gridMask.show();
>> var records = mapstore.getModifiedRecords();
>> if(!records.length) {
>> return;
>> }
>> var data = [];
>>
>> Ext.each(records, function(r, i) {
>> var o = r.getChanges();
>>
>> if(r.data.newRecord) { o.newRecord = true; }
>> o[primaryKey] = r.get(primaryKey);
>> data.push(o);
>> delete r.data.newRecordId;
>> }, this);
>>
>> // EL CONTENIDO DE LA VARIABLE "O" SE ENVIARA MEDIANTE
>> AJAX
>>
>> var o = {
>> url: './php/guardar2.php'
>> ,method:'POST'
>> ,scope:this
>> ,timeout: 100000
>> ,params: {
>> data:
>> Ext.encode(data)
>> }
>> ,callback: function (options, success, response) {
>> gridMask.hide();
>> var json =
>> Ext.util.JSON.decode(response.responseText);
>> if (json.success) {
>> mapstore.commitChanges();
>> }else{
>> Ext.MessageBox.show({
>> title: 'Error',
>> msg: json.mensaje,
>> buttons:
>> Ext.MessageBox.OK,
>> icon: Ext.MessageBox.ERROR
>> });
>> }
>> }
>> };
>> Ext.Ajax.request(o);
>> }
>> //FIN FUNCION gurdarCambios
>>
>>
>> Espero haber sido claro, perdón por la extensión del mail.
>>
>> Espero puedan orientarme para resolver el salvado a la BD.
>>
>> Saludos
>> Javier Diaz.
>>
>
>
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.osgeo.org/pipermail/spanish/attachments/20150909/fe88acf4/attachment-0001.html>
More information about the Spanish
mailing list