Map Series Demo Similar to Google Charts

TeeChart VCL for Borland/CodeGear/Embarcadero RAD Studio, Delphi and C++ Builder.
Post Reply
nader
Newbie
Newbie
Posts: 5
Joined: Thu Mar 23, 2017 12:00 am

Map Series Demo Similar to Google Charts

Post by nader » Thu Jun 08, 2017 7:00 pm

Hello,

I am currently using Google Charts (https://developers.google.com/chart/int ... y/geochart) to draw a map chart, the example is very simple to setup, I am even using it in Delphi using TWebBrowser and TPageProducer.
I am trying to do the same in Delphi using TChart (for Offline clients), and I am facing the following difficulties:
1 - How to setup the values for the countries: The data I have is very simple, Country and a number (This should be the Z value in TChart), but I found that I have multiple countries in the data section, so if I have [USA, 30], how should I set this up?
2 - Hovering over a country should show a simple tooltip value (Country name and the value), my search lead me to .NET samples only so far
3 - One more question, do I need to supply any shape files (or manually add any resource files) to my VCL application to use the map series.
Any help or simple demo using one map series.

Yeray
Site Admin
Site Admin
Posts: 9612
Joined: Tue Dec 05, 2006 12:00 am
Location: Girona, Catalonia
Contact:

Re: Map Series Demo Similar to Google Charts

Post by Yeray » Fri Jun 09, 2017 8:17 am

Hello,
nader wrote:1 - How to setup the values for the countries: The data I have is very simple, Country and a number (This should be the Z value in TChart), but I found that I have multiple countries in the data section, so if I have [USA, 30], how should I set this up?
Once a map is loaded, the series has a "Labels" array you can use to search for the index of a country. Then you can use that index to update the series MandatoryValueList array with the desired values.
Here a simple example:

Code: Select all

type
  TCountry = class
    Name: String;
    Value: Double;
  end;

implementation

{$R *.dfm}

uses TeeWorldSeries;

var MyCountries: array of TCountry;
    Series1: TWorldSeries;

procedure TForm1.FormCreate(Sender: TObject);
var i, j: Integer;
begin
  Chart1.View3D:=False;
  Chart1.Legend.Visible:=False;

  Series1:=TWorldSeries.Create(self);
  Chart1.AddSeries(Series1);

  Series1.Map:=TWorldMap(6);

  //populate array of countries with random values
  SetLength(MyCountries,16);
  j:=0;
  for i:=0 to Series1.Count-1 do
  begin
    if (j=0) or (MyCountries[j-1].Name<>Series1.Labels[i]) then
    begin
      MyCountries[j]:=TCountry.Create;
      MyCountries[j].Name:=Series1.Labels[i];
      MyCountries[j].Value:=random*20;
      Inc(j);
    end;
  end;
end;

//use array of countries to populate series
procedure TForm1.Button1Click(Sender: TObject);
var i, j: Integer;
begin
  for i:=0 to Series1.Count-1 do
  begin
    for j:=0 to High(MyCountries) do
    begin
      if Series1.Labels[i]=MyCountries[j].Name then
      begin
        Series1.MandatoryValueList[i]:=MyCountries[j].Value;
        break;
      end;
    end;
  end;

  Chart1.Repaint;
end;
nader wrote:2 - Hovering over a country should show a simple tooltip value (Country name and the value), my search lead me to .NET samples only so far
You can use the TMarksTipTool. This adds the tool and sets it to show both the label and the value:

Code: Select all

(Chart1.Tools.Add(TMarksTipTool) as TMarksTipTool).Style:=smsLabelValue;
nader wrote:3 - One more question, do I need to supply any shape files (or manually add any resource files) to my VCL application to use the map series.
You can either use any of the maps included with TeeChart or you can load your shape files.
Take a look at the TeeMaps demo included with the installation in the "\Examples\TeeMaps" folder.
Best Regards,
ImageYeray Alonso
Development & Support
Steema Software
Av. Montilivi 33, 17003 Girona, Catalonia (SP)
Image Image Image Image Image Image Please read our Bug Fixing Policy

nader
Newbie
Newbie
Posts: 5
Joined: Thu Mar 23, 2017 12:00 am

Re: Map Series Demo Similar to Google Charts

Post by nader » Fri Jun 09, 2017 6:19 pm

Thank you,

Actually I came here to answer my own question ;)
I figured it out, and I have an identical chart to what is offered by Google running offline, Awesome!

The only suggestion I have is related to the country name, it is better to have support for ISO country codes.

Thank you so much :)

Nader

nader
Newbie
Newbie
Posts: 5
Joined: Thu Mar 23, 2017 12:00 am

Re: Map Series Demo Similar to Google Charts

Post by nader » Fri Jun 09, 2017 6:54 pm

I found the code too as part of the Shape object :)

Thanks

Yeray
Site Admin
Site Admin
Posts: 9612
Joined: Tue Dec 05, 2006 12:00 am
Location: Girona, Catalonia
Contact:

Re: Map Series Demo Similar to Google Charts

Post by Yeray » Mon Jun 12, 2017 6:27 am

Hello,

I'm glad to hear all works as desired! :)
Best Regards,
ImageYeray Alonso
Development & Support
Steema Software
Av. Montilivi 33, 17003 Girona, Catalonia (SP)
Image Image Image Image Image Image Please read our Bug Fixing Policy

Post Reply