想要创建一个完全在浏览器中运行的Web应用程序,而没有后端服务器组件,该组件使用Google Earth API即时创建KML,在该组件中,单击“下载”按钮将激活Web浏览器的正常内容下载功能,或者提示保存具有.kml扩展名的文件,或通过KML MIME类型自动启动Google Earth。

我可以构造一个“数据:” URL来激活对使用Google Earth API在JavaScript中创建的KML文件的下载,但这仅适用于Chrome。 在FireFox中部分工作,但是以“ .part”文件扩展名保存,因此用户必须显式重命名文件才能在Google Earth中打开。 IE完全忽略了这一点。 例如,IE 9不支持Javascript生成的文件下载。 我正在寻找至少使用Chrome + FireFox + IE的跨浏览器解决方案。

<script type="text/javascript">
var ge;
var placemark;

google.load("earth", "1");

function init() {
  google.earth.createInstance('map3d', initCallback, failureCallback);    
}

... some code to create some KmlObject

function download() {
  // serialize as KML text to export
  var placemarkText = placemark.getKml();
  if (placemarkText) {
    var uriContent = "data:application/vnd.google-earth.kml+xml;charset=UTF-8," +
        encodeURIComponent(placemarkText); 
    window.open(uriContent, 'KML Download');
  }
}

</script>
</head>

<body onload="init()" style="font-family: arial, sans-serif; font-size: 13px; border: 0;">
 <INPUT TYPE="button" NAME="button2" Value="Download KML" onClick="javascript:download()">
 <div id="map3d" style="width: 600px; height: 380px;"></div>
</body>
</html>

我已经看到了使用http://code.google.com/p/download-data-uri/进行的黑客攻击,但这仅适用于Chrome浏览器,因此这不是实际的解决方案。

===============>>#1 票数:0 已采纳

一种可行的方法是使用Downloadify 它是 ...

“一个JavaScript和Flash库,无需服务器交互即可创建和下载文本文件。”

您可以在此处看到一个有效的示例 不幸的是,我不认为可以在旧版浏览器中本地执行此操作。

  ask by JasonM1 translate from so

未解决问题?本站智能推荐: