【问题标题】:How to load proj4 for lat/long in highmaps using typescript and react如何使用打字稿在highmaps中加载经纬度的proj4并做出反应
【发布时间】:2019-02-14 22:07:29
【问题描述】:

我想在使用打字稿的反应中重现 this highmaps 示例。但是,没有显示纬度/经度点,这似乎与 proj4 包有关,因为它在这个 javascript demo 中工作。

我已经在live demo 中尝试过。如果我按如下方式加载包,它没有被使用但我不知道应该在哪里调用它:

import * as proj4 from "proj4";

提前致谢!

【问题讨论】:

    标签: reactjs typescript highcharts proj


    【解决方案1】:

    Highcharts 需要 proj4 库应在 window 上可用,因此您可以创建自己的文件,将该包导出为模块,并包含以下代码:

    import proj4 from 'proj4';
    
    if (typeof window !== 'undefined') {
      window.proj4 = window.proj4 || proj4;
    }
    
    export default proj4;
    

    将其保存到其他文件,例如'proj4-module.js' 然后像这样导入它:

    import './proj4-module'
    

    现场示例: https://codesandbox.io/s/m4o2q0pzzy

    【讨论】:

      【解决方案2】:

      您可以使用 proj4 属性 https://api.highcharts.com/highmaps/chart.proj4

      例子:

      import proj4 from "proj4";
      import highcharts from "highcharts";
      import mapInit from "highcharts/modules/map";
      
      mapInit(highcharts);
      
      const chartOptions: highcharts.Options = {
                  chart: {
                      type: "map",
                      map: "mexico",
                      proj4: proj4,                
                  }
      };
      

      【讨论】:

        【解决方案3】:

        无论好坏,Highmaps 似乎都希望在全局对象上定义 proj4。只需添加这行代码:

        (window as any).proj4 = proj4;
        

        【讨论】:

        • 这适用于live demo。但是,在本地它会引发以下错误:TypeError: v.proj4 is not a function
        • 尝试将导入更改为import proj4 from "proj4"import proj4 = require("proj4")。希望这两个中的一个将根据您的构建配置起作用。真是一团糟……
        • 现在我得到了:TS1192: Module '".../node_modules/@types/proj4/index"' has no default export.。真是一团糟……
        • 你试过import proj4 = require("proj4")吗?还可以尝试将 esModuleInterop 编译器选项设置为 true 或 false。我们将找到选项的神奇组合。或者发布一个存储库,我会摆弄它。
        • 我确实尝试过,但结果是:TS1202: Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.esModuleInterop 设置为 true 也无济于事。
        猜你喜欢
        • 1970-01-01
        • 2020-11-23
        • 2019-12-04
        • 2021-01-04
        • 2022-08-21
        • 1970-01-01
        • 1970-01-01
        • 2022-09-24
        • 1970-01-01
        相关资源
        最近更新 更多