[OpenLayers-Dev] saving a vector file permanently

David Zwarg dzwarg+ol at azavea.com
Fri Jan 21 09:40:10 EST 2011


Hello Slawomir,

That's crafty! I didn't know you could do that trick ("open('data:...')".
Good to know. :)

-z

On Fri, Jan 21, 2011 at 9:32 AM, Slawomir Messner <
slawomir.messner at staff.uni-marburg.de> wrote:

>  Hi,
> we have/had the same "issue"(luckily we could change to server-side
> formatting). If you call the function below with
> "exportToFormat(mylayer,'kml')" you will get a download dialogue(tested with
> FF 3.6-4.0), !!but!! the write-function of OpenLayers.Format.KML(I think
> with json it's the same) is not perfect because style info is missing, if
> you're will enhance it.
>
> exportToFormat: function (layer, format) {
>           if (layer instanceof OpenLayers.Layer.Vector && layer.features.length == 0) {
>               return;
>           }
>           var formatText = null;
>           var mimeType = null;
>           if (format == 'svg') {
>               mimeType = "image/svg+xml";
>               formatText = document.getElementById(layer.id).innerHTML;
>           } else if (format == 'kml') {
>               mimeType = "application/vnd.google-earth.kml+xml";
>               var format = new OpenLayers.Format.KML(
>               { extractAttributes: true,
>                   extractTracks: true,
>                   internalProjection : new OpenLayers.Projection("EPSG:900913"),
>                   externalProjection : new OpenLayers.Projection("EPSG:4326")
>               }
>               );
>               var features = new Array();
>               var operation = new OpenLayers.Operation.CopyFeatureToLayer();
>               for (var i = 0; i < layer.features.length; i++) {
>                   var newfeature = new OpenLayers.Feature.Vector(layer.features[i].geometry.clone());
>                   newfeature.style = layer.features[i].style || layer.styleMap.createSymbolizer(layer.features[i], layer.features[i].renderIntent || 'default');
>                   newfeature.attributes = operation.clone(layer.features[i].attributes);
>                   features.push(newfeature);
>               }
>               formatText = format.write(features);
>           }
>           if (formatText != null) {
>               open("data:" + mimeType + "," + encodeURIComponent("<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + formatText));
>           }
>       },
>
>
>
> Am 21.01.2011 15:17, schrieb David Zwarg:
>
> Hello Mohammed,
>
> Look at the OpenLayers.Format classes.
>
> Here's a link to the geojson format example:
> http://dev.openlayers.org/apidocs/files/OpenLayers/Format/GeoJSON-js.html
>
> You will probably do something like:
>
> var format = new OpenLayers.Format.GeoJSON();
>
> // given that 'layer' is a vector layer attached to the map with some
> features:
> var jsonstring = format.write( layer.features );
>
> // given that 'txtarea' is an HTML textarea element somewhere in your page
> to display the geojson:
> txtarea.value = jsonstring;
>
> There's no way to save the file directly via openlayers (opening a "Save
> File..." dialog), you have to do some copy & pasting from the browser.
>
> -z
>
> On Fri, Jan 21, 2011 at 8:51 AM, Mohammed Rashad <
> mohammedrashadkm at gmail.com> wrote:
>
>> How can I save a OpenLayers.Layer.Vector to a gml, geojson or any
>> openlayer supported formats without using
>>  WFS or WFS- T( without geoserver,postgis);
>>
>>  Is it possible?
>>
>> --
>> Rashad
>>
>> _______________________________________________
>> Dev mailing list
>> Dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/openlayers-dev
>>
>>
>
> _______________________________________________
> Dev mailing listDev at lists.osgeo.orghttp://lists.osgeo.org/mailman/listinfo/openlayers-dev
>
>
>
> _______________________________________________
> Dev mailing list
> Dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/openlayers-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-dev/attachments/20110121/a0f0abbb/attachment.html


More information about the Dev mailing list