在 highcharts maps 中,应在 `afterdrilldown` 事件回调中添加钻取后的数据系列(如联系人点位),而非使用 `settimeout` 延迟执行——该事件确保地图渲染、视图缩放及图例更新全部完成后再安全注入新系列。
Highcharts Maps 的 Drilldown 模块在触发钻取时会异步执行一系列操作:包括地图投影重计算、视图缩放动画、旧系列移除、新地理边界加载等。若在 drilldown 事件中直接调用 chart.addSeries(),此时地图尚未完成重绘,可能导致坐标系未就绪、点位定位偏移(如 Texas 边界残留)、甚至系列渲染失败。
✅ 正确做法是监听 afterDrilldown 事件——它是 Highcharts 提供的生命周期钩子,严格保证钻取流程完全结束、图表处于稳定可操作状态后才触发。此时调用 addSeries() 可确保:
- 地理投影已适配新层级(如从 USA 切换到 Texas 州级地图);
- 所有非目标区域(其他州)已被彻底移除;
- 坐标转换(lat/lon → x/y)准确可用;
- 图表容器尺寸与视口已更新,避免点位错位。
以下为推荐实现代码: