amcharts 向下钻取地图国家可点击
amcharts drill-down map countries clickable
向下钻取图示例具有引用三个相关 javascript 文件的 index.html
文件。
- index.js
- continentsLow.js
- worldLow.js
现在各种参考指向 array of areas that allow url and target to be specified.
的定义
但哪个 javascript 文件将承载此负载并不明显。
在我看来 index.js 文件的相关部分是:
// Countries
var countriesSeries = chart.series.push(new am4maps.MapPolygonSeries());
var countries = countriesSeries.mapPolygons;
countriesSeries.visible = false; // start off as hidden
countriesSeries.exclude = ["AQ"];
countriesSeries.geodata = am4geodata_worldLow;
countriesSeries.useGeodata = true;
// Hide each country so we can fade them in
countriesSeries.events.once("inited", function() {
hideCountries();
});
worldLow
文件似乎是更合适的位置,因为它定义了国家多边形
am4internal_webpackJsonp(["fcaa"],{ATzU:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});window.am4geodata_worldLow={type:"FeatureCollection",
features:[{type:"Feature",geometry:{type:"Polygon",coordinates:[[[179.2223,-8.554],[179.2023,-8.4653],[179.2312,-8.5048],[179.2223,-8.554]]]},properties:{name:"Tuvalu",id:"TV"},id:"TV"},
{type:"Feature",geometry:{type:"Polygon",coordinates:[[[3.4624,-54.4471],[3.3461,-54.4511],[3.3669,-54.3997],[3.4814,-54.4001],[3.4624,-54.4471]]]},properties:{name:"Bouvet Island",id:"BV"},id:"BV"},
{type:"Feature",geometry:{type:"Polygon",coordinates:[[[-5.3345,36.1623],[-5.3382,36.1122],[-5.3562,36.1264],[-5.3551,36.1455],[-5.3345,36.1623]]]},[...]
我试图在此数组中添加 url
属性,但失败了。
执行此操作的正确方法是什么?
您引用的 link 都是针对 amCharts v3 的,而您的代码是针对 v4 的。
这是 v4 Drill-down Map 在线演示:https://www.amcharts.com/demos/drill-down-map/(我将使用它作为下面代码的基础)。
不清楚您的问题是什么,我假设您正在尝试让国家/地区可点击 link。 url
property of a MapPolygon
是进行这些更改的正确位置。
您可以直接分配,也可以通过 binding property fields to data 分配。
要直接分配它,您可以等到系列加载完毕,例如通过其 "inited"
event,然后使用该系列的 getPolygonById()
方法通过其 ISO2 ID 获取国家/地区。所以,例如如果你想让加拿大点击进入 google:
countriesSeries.events.on("inited", function() {
var canada = countriesSeries.getPolygonById('CA');
canada.url = "https://www.google.com/search/?q=canada";
});
要将 MapPolygon
的 url
属性 绑定到可能出现在您提供给系列的数据中的字段,请设置系列“template” propertyFields.url
到数据对象中匹配字段的名称(假设我们在这种情况下也将使用 "url"
),例如:
countrySeries.mapPolygons.template.propertyFields.url = "url";
现在 pass data to the series,例如如果你想让美国点击到google.com,传递一个数组,里面有一个对象,id
是"US"
,"url"
是"http://google.com"
:
countriesSeries.data = [
{
id: "US",
url: "https://www.google.com"
}
];
这是一个演示:
https://codepen.io/team/amcharts/pen/6b8bffc714a966304a8f29d6939ee064
向下钻取图示例具有引用三个相关 javascript 文件的 index.html
文件。
- index.js
- continentsLow.js
- worldLow.js
现在各种参考指向 array of areas that allow url and target to be specified.
的定义但哪个 javascript 文件将承载此负载并不明显。
在我看来 index.js 文件的相关部分是:
// Countries
var countriesSeries = chart.series.push(new am4maps.MapPolygonSeries());
var countries = countriesSeries.mapPolygons;
countriesSeries.visible = false; // start off as hidden
countriesSeries.exclude = ["AQ"];
countriesSeries.geodata = am4geodata_worldLow;
countriesSeries.useGeodata = true;
// Hide each country so we can fade them in
countriesSeries.events.once("inited", function() {
hideCountries();
});
worldLow
文件似乎是更合适的位置,因为它定义了国家多边形
am4internal_webpackJsonp(["fcaa"],{ATzU:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});window.am4geodata_worldLow={type:"FeatureCollection",
features:[{type:"Feature",geometry:{type:"Polygon",coordinates:[[[179.2223,-8.554],[179.2023,-8.4653],[179.2312,-8.5048],[179.2223,-8.554]]]},properties:{name:"Tuvalu",id:"TV"},id:"TV"},
{type:"Feature",geometry:{type:"Polygon",coordinates:[[[3.4624,-54.4471],[3.3461,-54.4511],[3.3669,-54.3997],[3.4814,-54.4001],[3.4624,-54.4471]]]},properties:{name:"Bouvet Island",id:"BV"},id:"BV"},
{type:"Feature",geometry:{type:"Polygon",coordinates:[[[-5.3345,36.1623],[-5.3382,36.1122],[-5.3562,36.1264],[-5.3551,36.1455],[-5.3345,36.1623]]]},[...]
我试图在此数组中添加 url
属性,但失败了。
执行此操作的正确方法是什么?
您引用的 link 都是针对 amCharts v3 的,而您的代码是针对 v4 的。
这是 v4 Drill-down Map 在线演示:https://www.amcharts.com/demos/drill-down-map/(我将使用它作为下面代码的基础)。
不清楚您的问题是什么,我假设您正在尝试让国家/地区可点击 link。 url
property of a MapPolygon
是进行这些更改的正确位置。
您可以直接分配,也可以通过 binding property fields to data 分配。
要直接分配它,您可以等到系列加载完毕,例如通过其 "inited"
event,然后使用该系列的 getPolygonById()
方法通过其 ISO2 ID 获取国家/地区。所以,例如如果你想让加拿大点击进入 google:
countriesSeries.events.on("inited", function() {
var canada = countriesSeries.getPolygonById('CA');
canada.url = "https://www.google.com/search/?q=canada";
});
要将 MapPolygon
的 url
属性 绑定到可能出现在您提供给系列的数据中的字段,请设置系列“template” propertyFields.url
到数据对象中匹配字段的名称(假设我们在这种情况下也将使用 "url"
),例如:
countrySeries.mapPolygons.template.propertyFields.url = "url";
现在 pass data to the series,例如如果你想让美国点击到google.com,传递一个数组,里面有一个对象,id
是"US"
,"url"
是"http://google.com"
:
countriesSeries.data = [
{
id: "US",
url: "https://www.google.com"
}
];
这是一个演示:
https://codepen.io/team/amcharts/pen/6b8bffc714a966304a8f29d6939ee064