[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