1

我一直在尝试使用 geoxml3 解析器解析 kml 文件。geoxml3.js 文件放在公用文件夹中。如果我将 kml 文件放在公用文件夹中,解析器工作正常。

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

但是,如果 kml 文件位于其他地方,例如在公用文件夹之外的“上传”文件夹中,我该如何使其工作。我努力了,

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

但这不起作用。我应该如何指定文件路径?我不能将 kml 文件放在公用文件夹中,因为文件夹内的任何更改都会使页面刷新。

请帮帮我。

4

2 回答 2

1

这个没试过,但Assets.getText()可能是你要找的。该文档 指定您向其传递相对于您的private目录的文件路径。

于 2013-10-24T10:01:49.800 回答
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;

        },
    });

});
于 2013-11-02T03:36:58.573 回答