我想使用带有钻取模块的 Highcharts 地图,使用户能够在全球地图上查看其所有联系人,然后单击钻取到大陆级别并仅查看该大陆中的联系人,然后单击钻取到国家/地区,只能看到该国家/地区的联系人。
我的问题是我不知道何时或如何添加联系人数据系列。按照我现在的方式,有些东西阻止了向下钻取的完成。
我创建了一个简单的示例,从美国国家/地区级别开始,然后深入到各州。我只是在进行深入研究后才添加联系人。这是一个小提琴:https://jsfiddle.net/PolarIce/50ukqjsh/21/
重现步骤:
我认为我遗漏了一些东西,因为文档中的任何地方都没有列出设置 3 秒超时。我确实用 1500 MS 尝试过,也有效,但这仍然是一个要求吗?
相关代码:
setTimeout(() => {
addContactSeries(chart);
}, 0);
const addContactSeries = function(chart) {
chart.addSeries({
name: "contacts",
type: 'mappoint',
data: contacts,
dataLabels: {
enabled: true,
format: '{point.name}'
}
});
}
const contacts = [
{
"city": "Dallas",
"country": "United States of America",
"lat": 32.998524,
"lon": -96.84046,
"name": "Contact 1",
"subregion": "Texas",
"z": 1
},
{
"city": "New York",
"country": "United States of America",
"lat": 40.728928,
"lon": -73.99173,
"name": "Contact 2",
"subregion": "New York",
"z": 1
},
{
"city": "Liverpool",
"country": "United Kingdom",
"lat": 53.405323,
"lon": -2.9935844,
"name": "Contact 3",
"subregion": "Liverpool",
"z": 1
},
{
"city": "Llandudno",
"country": "United Kingdom",
"lat": 53.328495,
"lon": -3.82909,
"name": "Contact 4",
"subregion": "Wales [Cymru GB-CYM]",
"z": 1
}
];
这与异步操作有关。为了确保在添加系列之前完成向下钻取,建议的方法是使用
afterDrilldown()
事件。如果您想删除该系列,可以利用 afterDrillUp()
事件。
chart: {
events: {
drilldown,
afterDrillUp,
afterDrilldown() {
addContactSeries(this);
}
}
},