2013-04-17 42 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。不幸的是,我不相信在傳統瀏覽器中本身可以做到這一點。