我一直在尝试使用 geoxml3 解析器解析 kml 文件。geoxml3.js 文件放在公用文件夹中。如果我将 kml 文件放在公用文件夹中,解析器工作正常。
geoXml.parse('doc.kml'); // this is working fine
但是,如果 kml 文件位于其他地方,例如在公共文件夹外的"上传"文件夹中,我该如何使其工作。我试过了,
geoXml.parse(uploadPath+'/doc.kml');
但这行不通。我应该如何指定文件路径?我无法将 kml 文件放在公用文件夹中,因为文件夹中的任何更改都会刷新页面。
请帮帮我。
还没有尝试过这个,但Assets.getText()
可能是你要找的。 文档指定向其传递相对于private
目录的文件路径。
好吧,无法解决路径问题。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;
},
});
});