javascript - 允许下载通过 JavaScript 和 Google Earth API 创建的 KML 文件

标签 javascript google-earth-plugin data-uri

想要创建一个完全在浏览器中运行的网络应用程序,无需使用 Google 地球 API 即时创建 KML 的后端服务器组件,点击“下载”按钮可激活网络浏览器的正常内容下载功能提示保存扩展名为 .kml 的文件或通过 KML mime 类型自动启动 Google 地球。

我可以构建一个“数据:”URL 来激活使用 Google 地球 API 在 JavaScript 中创建的 KML 文件的下载,但这仅适用于 Chrome。部分在 FireFox 中运行,但保存时使用“.part”文件扩展名,因此用户必须明确重命名文件才能在 Google 地球中打开。 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,因此这不是一个实用的解决方案。

最佳答案

一种可能的方法是使用 Downloadify .这是……

"a javascript and Flash library that enables the creation and download of text files without server interaction."

你可以看到一个working example here .不幸的是,我认为无论如何都无法跨旧版浏览器 native 执行此操作。

关于javascript - 允许下载通过 JavaScript 和 Google Earth API 创建的 KML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16072153/

相关文章:

javascript - JavaScript中数据URI的图像文件大小

javascript - 3D 建筑物上的 Google 地球插件点击事件

c# - 当 TreeView 失去焦点时,如何保留 KMLTreeView 项目 'selected'?

javascript - Google Earth API 按地标名称搜索

javascript - Head js 加载 javascript 文件时出现问题

javascript - 数据 uri 太大时为 "Aw, Snap"

javascript - 有什么方法可以使用 javascript/jquery 来缩短图像数据 URI?

javascript - 下载 html2canvas 图像到桌面

javascript - html 元素 safari iOS 的高度 100%

javascript - Angular : ng-message validation on submit click