<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Hi,<br>
    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.<br>
    <pre style="font-family: consolas;">exportToFormat:&nbsp;<span style="color: blue;">function</span>&nbsp;(layer,&nbsp;format)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">if</span>&nbsp;(layer&nbsp;<span style="color: blue;">instanceof</span>&nbsp;OpenLayers.Layer.Vector&nbsp;&amp;&amp;&nbsp;layer.features.length&nbsp;==&nbsp;0)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">return</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">var</span>&nbsp;formatText&nbsp;=&nbsp;<span style="color: blue;">null</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">var</span>&nbsp;mimeType&nbsp;=&nbsp;<span style="color: blue;">null</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">if</span>&nbsp;(format&nbsp;==&nbsp;<span style="color: maroon;">'svg'</span>)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mimeType&nbsp;=&nbsp;<span style="color: maroon;">"image/svg+xml"</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatText&nbsp;=&nbsp;document.getElementById(layer.id).innerHTML;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: blue;">else</span>&nbsp;<span style="color: blue;">if</span>&nbsp;(format&nbsp;==&nbsp;<span style="color: maroon;">'kml'</span>)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mimeType&nbsp;=&nbsp;<span style="color: maroon;">"application/vnd.google-earth.kml+xml"</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">var</span>&nbsp;format&nbsp;=&nbsp;<span style="color: blue;">new</span>&nbsp;OpenLayers.Format.KML(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;extractAttributes:&nbsp;<span style="color: blue;">true</span>,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extractTracks:&nbsp;<span style="color: blue;">true</span>,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;internalProjection&nbsp;:&nbsp;<span style="color: blue;">new</span>&nbsp;OpenLayers.Projection(<span style="color: maroon;">"EPSG:900913"</span>),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;externalProjection&nbsp;:&nbsp;<span style="color: blue;">new</span>&nbsp;OpenLayers.Projection(<span style="color: maroon;">"EPSG:4326"</span>)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">var</span>&nbsp;features&nbsp;=&nbsp;<span style="color: blue;">new</span>&nbsp;Array();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">var</span>&nbsp;operation&nbsp;=&nbsp;<span style="color: blue;">new</span>&nbsp;OpenLayers.Operation.CopyFeatureToLayer();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">for</span>&nbsp;(<span style="color: blue;">var</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;layer.features.length;&nbsp;i++)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">var</span>&nbsp;newfeature&nbsp;=&nbsp;<span style="color: blue;">new</span>&nbsp;OpenLayers.Feature.Vector(layer.features[i].geometry.clone());
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newfeature.style&nbsp;=&nbsp;layer.features[i].style&nbsp;||&nbsp;layer.styleMap.createSymbolizer(layer.features[i],&nbsp;layer.features[i].renderIntent&nbsp;||&nbsp;<span style="color: maroon;">'default'</span>);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newfeature.attributes&nbsp;=&nbsp;operation.clone(layer.features[i].attributes);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;features.push(newfeature);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatText&nbsp;=&nbsp;format.write(features);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue;">if</span>&nbsp;(formatText&nbsp;!=&nbsp;<span style="color: blue;">null</span>)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open(<span style="color: maroon;">"data:"</span>&nbsp;+&nbsp;mimeType&nbsp;+&nbsp;<span style="color: maroon;">","</span>&nbsp;+&nbsp;encodeURIComponent(<span style="color: maroon;">"&lt;?xml&nbsp;version=\"1.0\"&nbsp;encoding=\"UTF-8\"?&gt;&nbsp;"</span>&nbsp;+&nbsp;formatText));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</pre>
    <br>
    <br>
    Am 21.01.2011 15:17, schrieb David Zwarg:
    <blockquote
      cite="mid:AANLkTik9DVOD8rsRN6dGPyQ4UpRGr2pgxv6-TPcBacHA@mail.gmail.com"
      type="cite">Hello Mohammed,<br>
      <br>
      Look at the OpenLayers.Format classes.<br>
      <br>
      Here's a link to the geojson format example: <a
        moz-do-not-send="true"
href="http://dev.openlayers.org/apidocs/files/OpenLayers/Format/GeoJSON-js.html">http://dev.openlayers.org/apidocs/files/OpenLayers/Format/GeoJSON-js.html</a><br>
      <br>
      You will probably do something like:<br>
      <br>
      <span style="font-family: courier new,monospace; color: rgb(0, 0,
        153);">var format = new OpenLayers.Format.GeoJSON();</span><br
        style="font-family: courier new,monospace; color: rgb(0, 0,
        153);">
      <br style="font-family: courier new,monospace; color: rgb(0, 0,
        153);">
      <span style="font-family: courier new,monospace; color: rgb(0, 0,
        153);">// given that 'layer' is a vector layer attached to the
        map with some features:</span><br style="font-family: courier
        new,monospace; color: rgb(0, 0, 153);">
      <span style="font-family: courier new,monospace; color: rgb(0, 0,
        153);">var jsonstring = format.write( layer.features );</span><br
        style="font-family: courier new,monospace; color: rgb(0, 0,
        153);">
      <br style="font-family: courier new,monospace; color: rgb(0, 0,
        153);">
      <span style="font-family: courier new,monospace; color: rgb(0, 0,
        153);">// given that 'txtarea' is an HTML textarea element
        somewhere in your page to display the geojson:</span><br
        style="font-family: courier new,monospace; color: rgb(0, 0,
        153);">
      <span style="font-family: courier new,monospace; color: rgb(0, 0,
        153);">txtarea.value = jsonstring;</span><br>
      <br>
      There's no way to save the file directly via openlayers (opening a
      "Save File..." dialog), you have to do some copy &amp; pasting
      from the browser.<br>
      <br>
      -z<br>
      <br>
      <div class="gmail_quote">On Fri, Jan 21, 2011 at 8:51 AM, Mohammed
        Rashad <span dir="ltr">&lt;<a moz-do-not-send="true"
            href="mailto:mohammedrashadkm@gmail.com">mohammedrashadkm@gmail.com</a>&gt;</span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          How can I save a OpenLayers.Layer.Vector to a gml, geojson or
          any openlayer supported formats without using
          <div>&nbsp;WFS or WFS- T( without geoserver,postgis);</div>
          <div><br>
          </div>
          <div>Is it possible?<br clear="all">
            <br>
            -- <br>
            Rashad<br>
          </div>
          <br>
          _______________________________________________<br>
          Dev mailing list<br>
          <a moz-do-not-send="true" href="mailto:Dev@lists.osgeo.org">Dev@lists.osgeo.org</a><br>
          <a moz-do-not-send="true"
            href="http://lists.osgeo.org/mailman/listinfo/openlayers-dev"
            target="_blank">http://lists.osgeo.org/mailman/listinfo/openlayers-dev</a><br>
          <br>
        </blockquote>
      </div>
      <br>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
Dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Dev@lists.osgeo.org">Dev@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="http://lists.osgeo.org/mailman/listinfo/openlayers-dev">http://lists.osgeo.org/mailman/listinfo/openlayers-dev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>