我想获取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
从图表中。
答案 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