Search code examples
c#winformslivecharts

C# Windows Forms LiveCharts GeoMap


simply this works:

                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;

And this doesn't

                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;

In list _drzave I contain list of countries that have names and tags of countries. This wont work when using for loop, but it works when I set the values manually.


Solution

  • {
        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;
    }