unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP;
type
TForm1 = class(TForm)
Memo1: TMemo;
butTest: TButton;
IdHTTP1: TIdHTTP;
edStad1: TEdit;
edStad2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure butTestClick(Sender: TObject);
private
{ Private declarations }
public
function GetDistance(Adr1,Adr2: string; mode: string): string;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.GetDistance(Adr1,Adr2: string; mode: string): string;
var sURL,sMainURL,sOrig,sDest: string;
begin
sOrig:=Adr1;
sDest:=Adr2;
sMainURL:='http://maps.googleapis.com/maps/api/distancematrix/xml';
sURL:=sMainURL+'?'+'origins='+sOrig+'&'+'destinations='+sDest+'&'+'sensor=false';
sURL:=sURL+'&'+'mode='+mode;
Result:=idHTTP1.Get(sUrl);
end;
function MetersFromGMapsXML(s: string): double;
var p: integer;
begin
Result:=-1.0;
try
p:=pos('<distance>',s); delete(s,1,p);
p:=pos('<value>',s); delete(s,1,p);
p:=pos('</value>',s);
Result:=strtofloat(trim(copy(s,7,p-7)));
except
if pos('igin_address><',s)>0 then form1.memo1.text:='Fout in vertrek-adres.';
if pos('tion_address><',s)>0 then form1.memo1.text:='Fout in bestemming.';
end;
end;
procedure TForm1.butTestClick(Sender: TObject);
var s,Adr1,Adr2: string;
var d: double;
begin
Adr1:=edStad1.Text; Adr2:=edStad2.Text;
memo1.clear;
s:=GetDistance(Adr1,Adr2,'walking');
d:=MetersFromGMapsXML(s);
if d>0 then memo1.lines.add('De loopafstand tussen '+Adr1+' en '+Adr2+' is '+
format('%5.2f km',[d/1000.0]));
s:=GetDistance(Adr1,Adr2,'bicycling');
d:=MetersFromGMapsXML(s);
if d>0 then memo1.lines.add('De fietsafstand tussen '+Adr1+' en '+Adr2+' is '+
format('%5.2f km',[d/1000.0]));
s:=GetDistance(Adr1,Adr2,'driving');
d:=MetersFromGMapsXML(s);
if d>0 then memo1.lines.add('De rijdafstand tussen '+Adr1+' en '+Adr2+' is '+
format('%5.2f km',[d/1000.0]));
end;
end.
Bookmarks