2013-10-24 3 views
1

geoxml3 파서를 사용하여 kml 파일을 구문 분석하려고했습니다. geoxml3.js 파일은 공용 폴더에 저장됩니다. kml 파일을 공용 폴더에 넣으면 구문 분석기가 제대로 작동합니다.geoxml3 파서를 meteor js와 함께 사용할 때 kml 파일의 위치를 ​​지정하는 방법

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

하지만 kml 파일이 공용 폴더 외부의 '업로드'폴더에있는 경우 어떻게 작동시킬 수 있습니까? 나는 시도했다,

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

그러나 이것은 효과가 없다. 파일 경로를 어떻게 지정해야합니까? 공용 폴더에 kml 파일을 넣을 수 없으므로 폴더 내의 모든 변경 내용이 페이지를 새로 고칩니다.

도와주세요.

답변

0

글쎄, 경로 문제를 해결할 수 없습니다. Assets.getText()는 개인 폴더에 종속되며 서버 재시작을 중지시키지 않습니다. 그러나 대체 솔루션을 발견했습니다.이 솔루션을 사용하면 프로젝트를 프로젝트의 모든 폴더에 업로드하고 파일을 읽을 수 있습니다. 서버 측 나는 Assets.getText을 시도

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()이 (가) 찾고있는 것일 수 있습니다. documentationprivate 디렉토리를 기준으로 파일 경로를 전달하도록 지정합니다.

+0

()하고 문자열로 파일 내용을 반환에 클라이언트 측

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); } }); 

//에

//. 하지만 geoXml.parseKmlString (kml_string)을 사용하면 kml이지도에 표시되지 않습니다. "Uncaught TypeError : '정의되지 않은 getSouthWest'메서드를 호출 할 수 없습니다."오류가 발생합니다. – anoop

+0

'Assets.getText()'의 문자열은 어떻게 생겼습니까? 이 형식이'' ... ''입니까? 오류가 특정 지점 (거리 이름 및 번호) 또는 지역의 원인이되는 주소입니까? 양자 모두? –

+0

문자열에 " ... 태그가 포함되어 있지만, anoop