AmCharts地图:如何获取所有选中国家的列表
获取AmCharts多选地图中选中国家的名称/代码列表
方法一:利用官方API直接获取
AmCharts地图实例内置了getSelectedItems()方法,可直接返回所有选中的多边形元素集合,从中提取所需的名称或代码即可:
// 假设你的地图实例变量为mapInstance const selectedItems = mapInstance.getSelectedItems(); // 提取选中国家的名称和代码 const selectedCountries = selectedItems.map(item => ({ name: item.dataItem.dataContext.name, // 国家名称 code: item.dataItem.dataContext.id // 国家ISO代码(根据你的数据结构调整字段名) })); console.log("选中国家列表:", selectedCountries);
你可以在需要获取选中列表的时机(比如点击确认按钮、hit事件回调末尾)调用这段代码,无需额外维护状态。
方法二:手动维护选中数组(实时跟踪场景)
如果需要实时跟踪选中状态变化,可在hit事件中维护一个数组,根据元素的选中状态添加/移除数据:
// 初始化选中数组 let selectedCountries = []; polygonTemplate.events.on("hit", function(ev) { const countryData = ev.target.dataItem.dataContext; const isSelected = ev.target.isActive; // 切换后的选中状态 if (isSelected) { // 选中时添加到数组 selectedCountries.push({ name: countryData.name, code: countryData.id }); } else { // 取消选中时从数组移除 selectedCountries = selectedCountries.filter(item => item.code !== countryData.id); } console.log("当前选中的国家:", selectedCountries); });
注意事项
- 上述代码中的
name和id字段需匹配你使用的地图数据结构,若你的数据中国家代码存在code字段而非id,直接替换对应字段名即可。
内容的提问来源于stack exchange,提问作者Rafik Boubaker
相关产品推荐
相关产品推荐

