Amcharts Maps,如何设置和获取MapPolygonSeries的ID?

时间:2018-07-24 11:04:30

标签: amcharts

我想获取MapPolygonSeries的ID,以便知道单击了哪个元素。

我的目标是在下拉列表中代表所选国家(在地图上)。

当前,我具有以下代码,可在单击时缩放到地图区域。

// Zooming to map area on click
polygonTemplate.events.on("hit", (ev) => {
  ev.target.series.chart.zoomToMapObject(ev.target, this.COUNTRY_ZOOM);
  // How to get the ID of the of the map object here? ev.id?
  this.handleCountrySelection();
});

为了创建多边形系列,我将am4geodata_worldHigh与

一起使用
useGeodata = true

从图表中。

1 个答案:

答案 0 :(得分:2)

您不清楚MapPolygonSeries的ID是什么意思。

如果要提供自己的方式来标识MapPolygonSeries,可以将字符串分配给its name property

使用useGeodata = true,将向amCharts的geojson系列中的每个MapPolygon 中提供ISO2 ID和名称。因此,如果您在用户单击时查找国家/地区的ID /名称,则可以通过地图Polygon的dataItem.dataContext在您的事件处理程序中找到它,该外观类似于ev.target.dataItem.dataContext,例如:

// identify a series by its name
polygonSeries.name = "worldSeries";

// Zooming to map area on click
polygonTemplate.events.on("hit", (ev) => {
  ev.target.series.chart.zoomToMapObject(ev.target, this.COUNTRY_ZOOM);
  // How to get the ID of the of the map object here? ev.id?
  console.log("Series name: ", ev.target.series.name);
  console.log("Country ISO2 id: ", ev.target.dataItem.dataContext.id);
  console.log("Country ISO2 name: ", ev.target.dataItem.dataContext.name);
  this.handleCountrySelection();
});

简单的演示,结合在一起: https://codepen.io/team/amcharts/pen/e3fd144dcf886d29d27b7f47df73f565/?editors=1111