带有 highcharts 的 Angular4 不能使用 world.js

Angular4 with highcharts can't use world.js

我需要有关在 angular4 应用程序中获取高图的帮助。我使用 npm 安装了 highcharts。

我像这样在我的 app.component.ts 中加入了 highcharts 因为我有一些错误可以通过这种方式解决(也许是错误的方式):

const Highcharts = require('highcharts');
require('highcharts/highcharts-more')(Highcharts);
require('highcharts/modules/solid-gauge')(Highcharts);
require('highcharts/modules/map')(Highcharts);
require('highcharts/modules/data')(Highcharts);
require('highcharts/js/modules/world')(Highcharts);

之后我可以毫无问题地使用 Highcharts 创建图表,但问题是当我想使用 Highcharts.js + map.js 创建地图时,我似乎无法获得'world.js' 来自包含或导入的地图集,还是我遗漏了什么?我尝试以与 require('.../world.js')(Highcharts) 相同的方式获取文件,并尝试在 index.html 中使用 "<script src=""> 标记并使用 highcharts 中的 link 作为源,这两种方式我都得到错误(link 向下提供)。我还尝试将 'world.js' 中的数据直接复制到 'mapData: Highcharts.maps['custom/world'] = {...},' 下的图表选项中,它就是这样工作的。那么我可以做些什么来使用它而不是复制粘贴数据呢?

Error screenshot

为 Highmaps 加载地图

地图是 JSON 类型的文件,其中包含创建图表时使用的 mapData 代码。从 official Highcharts map collection in Javascript format or use a custom map 下载地图并将其添加到您的应用程序。编辑地图文件,通过在文件开头和结尾添加以下代码,可以像模块一样加载它:

(function (factory) {
    if (typeof module === 'object' && module.exports) {
        module.exports = factory;
    } else {
        factory(Highcharts);
    }
}(function (Highcharts) {

...
/* map file data */
...

}));

在使用 GeoJSON 地图文件格式的情况下,您应该添加以上代码,此外,在添加的开头和地图文件数据之间,以下代码:

Highcharts.maps["myMapName"] =

其中 "myMapName" 是您的地图名称,将在创建图表时使用。接下来,您将加载一个本地 .js 文件,因此您应该在您的应用中添加 tsconfig.json allowJs: true:

...
"compilerOptions": {
    "allowJs": true,
    ...

地图已准备好导入您的应用程序。

import * as Highcharts from 'highcharts/highmaps';
import * as HC_myMap from './relative-path-to-the-map-file/map-file-name';
HC_myMap(Highcharts);

其中 relative-path-to-the-map-file 应该是地图文件的相对(对于导入地图的模块)路径,map-file-name 应该是地图文件的名称。