2013-10-24 24 views
1

我一直在嘗試使用geoxml3解析器解析kml文件。 geoxml3.js文件放在公用文件夾中。解析器工作正常,如果我把kml文件放在公用文件夾中。如何在使用流星js使用geoxml3解析器時指定kml文件的位置

geoXml.parse('doc.kml'); // this is working fine 

但如何我可以讓它工作,如果KML文件位於別處,說在公共文件夾以外的「上傳」文件夾。我曾嘗試過,

geoXml.parse(uploadPath+'/doc.kml'); 

但這不起作用。我應該如何指定文件路徑?我無法將kml文件放在公用文件夾中,因爲文件夾內的任何更改都會刷新頁面。

請幫我一把。

回答

0

那麼,無法解決路徑問題。 Assets.getText()取決於私人文件夾,也不會阻止服務器重新啓動。但是找到了一種替代解決方案,您可以將文件上傳到項目應用程序中的任何文件夾並從中讀取。

//在客戶端

Meteor.call('getKmlString', kml_file_name, function(error, kml_string) { 

     if (error) { 
      console.log('ERROR in getting kml string'); 
      console.log(error); 
     } else { 
      console.log('GOT Kml String'); 
      geoXml.parseKmlString(kml_string); 
     } 

}); 

//在服務器端

Meteor.startup(function() { 

    // code to run on server at startup 
    return Meteor.methods({ 
     getKmlString: function(kml_file_name) { 

      var content = ''; 

      var fs = Npm.require('fs'); 
      var encoding = encoding || 'binary'; 
      var chroot = Meteor.chroot || 'uploads'; 

      var path = chroot + (path ? '/' + path + '/' : '/'); 

      var content = fs.readFileSync('../../../../../' + path + kml_file_name, "utf-8", function read(err, data) { 

       if (err) { 
        throw err; 
       } 

      }); 

      return content; 

     }, 
    }); 

}); 
1

還沒有試過這個,但Assets.getText()可能是你在找什麼。 documentation 指定您將它傳遞給相對於您的private目錄的文件路徑。

+0

我已經試過Assets.getText()和它返回文件內容作爲一個字符串。但是當我使用時,geoXml.parseKmlString(kml_string),kml沒有顯示在地圖上。我得到「Uncaught TypeError:不能調用方法'getSouthWest'未定義的」錯誤。 – anoop

+0

「Assets.getText()」中的字符串是什麼樣的?它是否爲' ...''的形式?導致錯誤的地址是特定點(街道名稱和號碼)還是區域?都? –

+0

該字符串包含「 ...」標籤,但它出現在<?xml version =「1.0」encoding =「UTF-8」?> – anoop