[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