【问题标题】:Openlayers javascript library in typescript打字稿中的 Openlayers javascript 库
【发布时间】:2014-06-23 09:16:12
【问题描述】:

我们正在使用打字稿进行项目。这是第一个带有打字稿的项目。 在这个项目中,我们需要连接到 WFS 服务器,这会将 GML 返回给我们。现在要解析 GML,我们考虑使用 OpenLayers javascript 库。我知道Openlayers 有DefiniteTyped 版本,但是GML 解析还没有准备好。

所以我们尝试了 javascript 文件。但我认为我们遗漏了一些东西,因为我们得到了一个错误:Openlayers 是未定义的。

这是我们的代码:

module PP.Data {
    declare var OpenLayers: any;
    export class WebRequest {

        public GetGML(url: string): XMLDocument {
            var retour: XMLDocument;
            var _this = this;
            $.ajax({
                url: url,
                type: 'GET',
                crossDomain: true,
                cache: false,
                async: false,
                dataType: 'xml'
            }).done(function (data) {
                var format = new OpenLayers.Format.GML();
                retour = format.read(data);
                });

            return retour;
        }
}
}

因此,当我们尝试创建 GML 实例时,错误就开始了。

有什么想法吗?

谢谢!

【问题讨论】:

  • 我对 typescript 了解不多,但是您不应该在 GetGML done 函数中将 OpenLayers 称为任何内容吗,就像您在外面声明的那样?
  • Typescript 显示错误。
  • 大概是的。这将与上下文、this 等有关,但我对 typescript 的调试了解不足。行 var format = new OpenLayers.Format.GML();自己肯定没问题。

标签: javascript typescript openlayers


【解决方案1】:

OpenLayers 未定义。

确保包含 OpenLayers(例如,使用脚本标签)您尝试从 typescript 中使用它之前

与错误无关但已注意到

您实际上是在此处返回undefined(因为在返回之前未分配retour)。

       .done(function (data) {
            var format = new OpenLayers.Format.GML();
                  retour = format.read(data);
            });

        return retour;

你应该返回 promise 即。 .done 函数的返回值或有一个回调。它需要一直异步。

【讨论】:

  • 正确。我已将 Openlayers.js 添加到 html 页面。在 js 之后,我添加了我的文件:
猜你喜欢
  • 2014-11-16
  • 2021-03-03
  • 1970-01-01
  • 2021-07-02
  • 2018-09-13
  • 2016-11-06
  • 2018-10-22
  • 2018-11-10
  • 2018-04-15
相关资源
最近更新 更多