我一直在尝试使用geoxml3解析器解析kml文件。 geoxml3.js文件放在公用文件夹中。如果我将kml文件放在公共文件夹中,解析器工作正常。
geoXml.parse('doc.kml'); // this is working fine
但是,如果kml文件位于其他位置,例如在公共文件夹外的“uploads”文件夹中,我怎么能使它工作。我试过了,
geoXml.parse(uploadPath+'/doc.kml');
但这不起作用。我该如何指定文件路径?我无法将kml文件放在公共文件夹中,因为文件夹内的任何更改都会使页面刷新。
请帮帮我。
答案 0 :(得分:1)
没有试过这个,但Assets.getText()
可能就是你要找的。 documentation {{3}}
指定您传递相对于private
目录的文件路径。
答案 1 :(得分: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;
},
});
});