You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AMCharts 4 Maps设置加拿大省份的颜色

加拿大地图省份着色失效问题

我想用amCharts展示加拿大地图,让指定省份与其他省份呈现不同颜色。这套逻辑在世界地图选中国家着色时可正常运行,但移植到加拿大省份设置上完全失效,所有省份都显示为同一种颜色。

我的代码

// 创建地图实例
var chart = am4core.create("map", am4maps.MapChart);

// 设置地图定义
chart.geodata = am4geodata_canadaLow;

// 设置投影方式
chart.projection = new am4maps.projections.Miller();

// 创建地图多边形系列
var polygonSeries = chart.series.push(new am4maps.MapPolygonSeries());

// 从GeoJSON加载多边形数据(如省份名称)
polygonSeries.useGeodata = true;

// 配置系列模板
var polygonTemplate = polygonSeries.mapPolygons.template;
polygonTemplate.tooltipText = "{name}";
polygonTemplate.fill = am4core.color("#74B266");

// 创建悬停状态并设置替代填充色
var hs = polygonTemplate.states.create("hover");
hs.properties.fill = am4core.color("#367B25");

// 添加数据
polygonSeries.data = [{
  "id": "ON",
  "name": "Ontario",
  "value": 100,
  "fill": am4core.color("#F05C5C")
}, {
  "id": "QC",
  "name": "Quebec",
  "value": 50,
  "fill": am4core.color("#5C5CFF")
}];

// 将"fill"属性绑定到数据中的"fill"字段
polygonTemplate.propertyFields.fill = "fill";

当前效果

所有省份颜色一致的加拿大地图

问题原因与解决方法

核心问题

am4geodata_canadaLow地理数据中,省份的默认匹配ID是带国家前缀的格式(如CA-ON、CA-QC),但代码中用的是不带前缀的ON、QC,导致数据无法和地理图形匹配,着色规则不生效。另外,数据中直接传入am4core.color()对象也不符合propertyFields的规范。

解决方法(二选一即可)

方法1:修改数据ID为带前缀格式

将数据中的id字段改为地理数据对应的带前缀格式:

polygonSeries.data = [{
  "id": "CA-ON",
  "name": "Ontario",
  "value": 100,
  "fill": "#F05C5C"
}, {
  "id": "CA-QC",
  "name": "Quebec",
  "value": 50,
  "fill": "#5C5CFF"
}];

方法2:指定匹配的字段为省份代码

am4geodata_canadaLow的省份数据中包含code字段(值为不带前缀的ON、QC),只需修改polygonSeries的匹配字段:

// 在polygonSeries.useGeodata = true之后添加这行
polygonSeries.idField = "code";

// 数据保持原有格式,同时把fill改为字符串格式
polygonSeries.data = [{
  "id": "ON",
  "name": "Ontario",
  "value": 100,
  "fill": "#F05C5C"
}, {
  "id": "QC",
  "name": "Quebec",
  "value": 50,
  "fill": "#5C5CFF"
}];

补充说明

不要在数据中直接使用am4core.color()创建颜色对象,直接传入十六进制颜色字符串即可,propertyFields.fill会自动处理为颜色对象,避免潜在的序列化问题。


内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:05:38