Клуб API Карт

delphi + ya maps

readdmail
10 апреля 2011, 14:46

Дело вот как обстоит, надо написать программу на делфи, банально 2 поля TEdit , кнопка и Label... пишешь первый адрес и второй адрес по клику на кнопку в лейбл пишется расстояние между точками. может кто подсказать как реализовать?

3 комментария
Подписаться на комментарии к посту

пнх

 

Дистанция в метрах

 

 

 

 

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls,Math;

 

type

  TForm1 = class(TForm)

    btn1: TButton;

    procedure btn1Click(Sender: TObject);

  private

    { Private declarations }

 

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

 

 

 

{ TForm1 }

 

function get_distance(lat1, lon1, lat2, lon2: real):real;

const circle_radius = 6372795;

var cos_lat1,cos_lat2,sin_lon1,sin_lon2,deltalong:real;

begin

 

 cos_lat1:=cos(pi*lat1/180);

 cos_lat2:=cos(pi*lat2/180);

 sin_lon1:=sin(pi*lat1/180);

 sin_lon2:=sin(pi*lat2/180);

 

 deltalong:=ABS((pi*lon2/180)-(pi*lon1/180));

 

 result:=(circle_radius*arccos(cos_lat1*cos_lat2*cos(deltalong)+sin_lon1*sin_lon2));

 

 

end;

 

 

procedure TForm1.btn1Click(Sender: TObject);

begin

ShowMessage(FloatToStr(get_distance(59.560010,30.108447,59.825806,30.326750)));

end;

 

end.

 

Обратиться к геокодеру по HTTP и определить  координаты для адресов. А дальше по формуле можно посчитать расстояние между двумя точками.

Только вот кажется в случае с Дельфи это будет нарушение пользовательского соглашения Яндекс АПИ