2013-04-17 45 views
2

创建KML文件的下载要在不创建KML后端服务器组件来创建完全在浏览器中运行的Web应用程序上的即时使用谷歌地球API,其中点击“下载”按钮启动网页浏览器的正常内容下载功能会提示保存与.KML扩展名的文件或者通过KML MIME类型的方式自动启动谷歌地球。允许从JavaScript和谷歌地球API

我可以构建一个“数据:” URL激活下载使用谷歌地球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所以这不是一个可行的解决方案。

+0

的[在内存中创建一个文件供用户下载,而不是通过服务器]可能重复(http://stackoverflow.com/questions/3665115/create-a-file-in-memory-for-user-to-下载 - 不通过服务器) – Fraser

回答

0

一种可能的方式做到这一点是使用Downloadify。它是...

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

你可以看到一个working example here。不幸的是,我不相信在传统浏览器中本身可以做到这一点。