C# Windows 表单 LiveCharts GeoMap

C# Windows Forms LiveCharts GeoMap

这很有效:

                LiveCharts.WinForms.GeoMap geoMap = new LiveCharts.WinForms.GeoMap();
                Dictionary<string, double> keyValues = new Dictionary<string, double>();
                keyValues["China"] = 81285;
                keyValues["United States"] = 75066;
                keyValues["Italia"] = 74384;
                keyValues["ES"] = 56196;
                keyValues["Ireland"] = 29046;
                keyValues["France"] = 25233;
                keyValues["UK"] = 9849;
                keyValues["CA"] = 3579;
                keyValues["PK"] = 1179;
                keyValues["IN"] = 719;
                geoMap.HeatMap = keyValues;
                geoMap.Source = $"{Application.StartupPath}\World.xml";
                metroTabPage2.Controls.Add(geoMap);
                geoMap.Dock = DockStyle.Fill;

而这不是

                LiveCharts.WinForms.GeoMap geoMap = new LiveCharts.WinForms.GeoMap();
                Dictionary<string, double> keyValues = new Dictionary<string, double>();
                int randomnumber = 0;
                for (int i=0;i<_drzave.Count();i++)
                {
                    randomnumber = randomnumber + 551;
                    keyValues[$"{_drzave[i].sImeDrzave}"] = randomnumber;
                }
                geoMap.HeatMap = keyValues;
                geoMap.Source = $"{Application.StartupPath}\World.xml";
                metroTabPage2.Controls.Add(geoMap);
                geoMap.Dock = DockStyle.Fill;

在列表 _drzave 中,我包含具有国家名称和标签的国家列表。 这在使用 for 循环时不起作用,但当我手动设置值时它起作用。

{
    var geoMap = new LiveCharts.WinForms.GeoMap();
    var heatMap = new Dictionary<string, double>();

    var randomnumber = 0;

    foreach(var item in _drzave)
    {
        randomnumber += 551;
        heatMap.TryAdd(item.sImeDrzave, randomnumber);
    }

    geoMap.HeatMap = heatMap;
    geoMap.Source = $"{Application.StartupPath}\World.xml";
    metroTabPage2.Controls.Add(geoMap);
    geoMap.Dock = DockStyle.Fill;
}