从列表中选择HighMaps地图 - Highcharts.geojson和Highcharts.mapDataIndex问题

问题描述 投票:0回答:1

我想创建一个地图,我可以提供这样所有可用mapDatas的下拉列表:https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/maps/demo/all-maps

我有我所有的在@ highcharts本地系统/地图收集(https://www.highcharts.com/docs/maps/map-collection)在地图上,我想使用它们,而不是在运行时从https://code.highcharts.com/mapdata下载。

在我的打字稿文件我用下面的进口

import * as Highcharts from "highcharts/highmaps";
import * as HC_DATA from "highcharts/modules/data";
HC_DATA(Highcharts);

在系列中,我提供的属于MapData:

series: [{
            mapData: Highcharts.geojson(Highcharts.maps['custom/world']),
            name: 'My series',
            data: data,
        }]   

我会在运行时出现以下异常:

NG:///CreationModule/DashboardComponent.ngfactory.js:564错误类型错误:无法读取属性“功能”的未定义在Object.a.geojson

第二个问题:我想所有可用的地图列表,我尝试,因为它在demo/all-maps解释真实访问Highcharts.mapDataIndex,我得到的错误mapDataIndex是不确定的。

请指导我怎样才能解决上述问题,我想我没有正确使用所需要的进口,请指导。

angular typescript highcharts
1个回答
1
投票

第一个问题是有关地图数据的错误输入。简单Highcharts.maps['custom/world']是不确定的。您可以导入地图数据,JSON,并通过它来chart.map财产这样的:

const worldMap = require('@highcharts/map-collection/custom/world.geo.json');

chartOptions = {
    chart: {
      map: worldMap
    },
    ...
}

第二个问题:我想所有可用的地图列表,我尝试,因为它在演示的解释来访问Highcharts.mapDataIndex /全地图,我得到的错误mapDataIndex是不确定的。

mapDataIndex没有定义,因为它不是Highcharts默认属性,你必须加载它(在本例中就是从这里下载:https://code.highcharts.com/mapdata/index.js?1)。从如何加载highcharts-angular官方包装的文档检查这样的描述:https://github.com/highcharts/highcharts-angular#to-load-a-wrapper

mapdata.js:

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

...
/* map data content here */
...

}));

在一个图表组件:

require('./mapdata')(Highcharts);

演示:

编辑

地图数据可以使用import也加载:

import mapdata from "./mapdata";
import * as worldMap from '@highcharts/map-collection/custom/world.geo.json';

mapdata(Highcharts);

mapdata.js:

export default function (Highcharts) {
   Highcharts.mapDataIndex = {...}
}

演示:

© www.soinside.com 2019 - 2024. All rights reserved.