如何调整amCharts地图中MapPolygonSeries或Polygon的大小?
amCharts 热力图小区域放大实现方案
问题根因
直接对复制到新
MapPolygonSeries的多边形设置scale属性不生效,是因为地图系列默认会根据全局投影、缩放等级自动重置多边形变换属性,手动设置的缩放参数会被覆盖。
具体实现步骤
- 为需要放大的小区域单独创建独立的
MapPolygonSeries,关闭系列自动聚合配置calculateAggregates: false,同时给该系列下所有复制的多边形设置projection: "none",脱离全局地图投影的自动变换控制。 - 不直接使用
scale属性调整尺寸,而是调用amCharts内置的坐标变换方法处理多边形路径,示例代码如下:
// originalPoly为原始小区域多边形实例,scaleRatio为自定义放大倍数 const areaCenter = originalPoly.geoCentroid; // 基于区域中心点缩放路径坐标 const scaledPath = am4core.multiplyMultiPolygon(originalPoly.multiPolygon, scaleRatio, areaCenter); // 创建复制多边形 const copiedPoly = customSeries.mapPolygons.create(); copiedPoly.multiPolygon = scaledPath; copiedPoly.fill = am4core.color("#ff0000");
- 调整放大后多边形的显示位置,直接设置
copiedPoly.x、copiedPoly.y属性即可移动到侧边指定区域,该设置不会被地图投影逻辑覆盖。 - 如有交互需求,可单独为该自定义系列的多边形绑定事件监听,不会和原始地图区域的交互逻辑冲突。
内容的提问来源于stack exchange,提问作者Mariano
相关产品推荐
相关产品推荐

