const
MAX_GA_MAPS = 200;
{$IFDEF PAIDVERS}
SDLVersionInfo = 'geoatlas_r1210_full';
IsLightEd = false;
{$ELSE}
SDLVersionInfo = 'geoatlas_r1210_lighted';
IsLightEd = true;
{$ENDIF}
Release = 1210;
type
TMapDefinition = record
MapFName : string;
Caption : string;
Resolution : double;
Corners : TCornerArray;
end;
{$IFDEF GE_LEV29}
[ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidWin64x)]
{$ENDIF}
TGeoAtlas = class(TCustomControl)
private
FGeoMap : TGeoMap;
FCPanel : TPanel;
FSBZoom : TSpeedButton;
FSBPoint : TSpeedButton;
FCboxMaps : TComboBox;
FMapOLColor : TColor;
FMapOLVisible : boolean;
FMinResDiff : double; // minimum required resolution
// difference for zooming (in percent)
FNumRegMaps : integer; // number of registered maps
FRegMaps : array[1..MAX_GA_MAPS] of TMapDefinition;
FOnZoomButClick : TNotifyEvent;
FOnPoiButClick : TNotifyEvent;
FOnCBxMapsChg : TNotifyEvent;
FCurrentMapIdx : integer; // currently selected map;
procedure CBoxMapsChange (sender: TObject);
procedure FGeoMapDataRendered(Sender: TObject; Canvas: TCanvas);
procedure FGeoMapMouseDown (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FGeoMapMouseUp (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FGeoMapMouseMove (Sender: TObject; Shift: TShiftState;
X,Y: integer);
procedure FGeoMapImgRequest (Sender: TObject; var FileName: string);
procedure FGeoMapClick(Sender: TObject);
procedure FGeoMapDblClick(Sender: TObject);
procedure FSBZoomClick(Sender: TObject);
procedure FSBPointClick(Sender: TObject);
procedure SetMapOLColor (value: TColor);
procedure SetMapOLVisible (value: boolean);
function GetCPnlVis: boolean;
procedure SetCPnlVis (value: boolean);
function GetMapDef (ix: integer): TMapDefinition;
protected
procedure CreateWnd; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property CmdPanel: TPanel read FCPanel write FCPanel;
property CurrentMap: TGeoMap read FGeoMap write FGeoMap;
property NumRegMaps: integer read FNumRegMaps;
property Maps[ix: integer]: TMapDefinition read GetMapDef;
property MapSelector: TComboBox read FCBoxMaps write FCBoxMaps;
property PointerButton: TSpeedButton read FSBPoint write FSBPoint;
function SelectMap (Index: integer): boolean;
function RegisterMap (MapFName: string): boolean;
procedure UnregisterMap (index: integer);
property ZoomButton: TSpeedButton read FSBZoom write FSBZoom;
function ZoomIn (CurrentLat, CurrentLong,
CurrentResolution: double): boolean;
function ZoomOut (CurrentLat, CurrentLong,
CurrentResolution: double): boolean;
published
property Align;
property CmdPanelVisible: boolean
read GetCPnlVis write SetCPnlVis;
property MapOutlineColor: TColor
read FMapOLColor write SetMapOLColor;
property MapOutlineVisible: boolean
read FMapOLVisible write SetMapOLVisible;
property MinResDiff: double
read FMinResDiff write FMinResDiff;
{$IFDEF GE_LEV17}
(**) property StyleElements;
{$ENDIF}
property Visible;
property OnMouseMove;
property OnMouseDown;
property OnMouseUp;
property OnClick;
property OnDblClick;
property OnZoomButClick: TNotifyEvent
read FOnZoomButClick write FOnZoomButClick;
property OnPointerButClick: TNotifyEvent
read FOnPoiButClick write FOnPoiButClick;
property OnCBoxMapsChange: TNotifyEvent
read FOnCBxMapsChg write FOnCBxMapsChg;
end;
|