class - 使用 openlayers 和 typescript 类

标签 class typescript openlayers

/// <reference path="openlayers.d.ts" />

class MapComponent {
    element: HTMLElement;
    map: OpenLayers.Map;

    constructor(element: HTMLElement) {
        // Setup our map object
        this.element = element;
        this.map = new OpenLayers.Map(this.element);
    }

    init() {
        // Setup our two layer objects
        var osm_layer_map = new OpenLayers.Layer.OSM("OSM");

        // Add layers to the map
        this.map.addLayers([osm_layer_map]);

        // Add a layer switcher control
        this.map.addControl(new OpenLayers.Control.LayerSwitcher({}));

        // Zoom the map to the max extent
        if (!this.map.getCenter()) {
            this.map.zoomToMaxExtent();
        }
    }
}

window.onload = () => {
    var el = document.getElementById('map');
    var mc = new MapComponent(el);
    mc.init();
}

我有上面的一段代码来处理一个简单的 HTML 文件,该文件只有一个 ID,“ map ”,样式为:高度和宽度 @ 500 像素。

我已经尝试了其他几种方法来显示 map ,但到目前为止我得到的只是一个白页(空白)。

谁能指出我正确的方向?

目前尝试过的解决方案:

  • 使用 jquery 和 ready 函数

  • 替换 window.onload直接从 html 调用,<script><script/>

  • 地点 document.getElementById()在新OpenLayers.Map(here);第一次创建时 this.map

  • 放置 window.onload在上方和下方调用(当前)

  • 使用导出类或公共(public)类 init()或两者兼而有之

到目前为止,我只希望它能正常工作。

最佳答案

似乎使用提供的元素创建 map 并稍后定义选项不起作用。

或者使用选项初始化 map

    var options = {
        projection: "EPSG:3857",
        maxExtent: new OpenLayers.Bounds(-200000, -200000, 200000, 200000),
        center: new OpenLayers.LonLat(-12356463.476333, 5621521.4854095)
    };

    this.map = new OpenLayers.Map(this.element, options);

或者在 init 方法的末尾调用 this.map.render(this.element)

还要确保你的 div 实际上是可见的并且指定了一些大小,否则它可能不可见......

关于class - 使用 openlayers 和 typescript 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20793292/

相关文章:

javascript - 获取 OpenLayers GET 请求的 responseText JSON 元素

java - 需要帮助理解如何在 Java 中将不同类的对象连接到主类

c++ - 使用递归方法遇到段错误

java - 在一种方法中设置变量的值并在另一种方法中打印

javascript - 我如何设置对变量的 promise 的响应

c# - 工具版本不支持 VsTsc 任务

typescript - 你能在 TypeScript 中扩展一个函数吗?

javascript - 添加事件点击到标记 openlayers

javascript - 使用bbox策略强制刷新openlayers 5.3集群源码

C++ 在 main() 函数之外创建类的实例