?? supermap.txt
字號(hào):
{=====================================SuperMap Objects 示范工程說(shuō)明=======================================
功能簡(jiǎn)介:示范SuperMap中的跟蹤功能。
所用控件:SuperMap控件和SuperWorkspace控件。
所用數(shù)據(jù):當(dāng)前目錄下的Data.sdb和Data.sdd文件
操作說(shuō)明:
點(diǎn)擊"跟蹤"按鈕,程序會(huì)在當(dāng)前地圖窗口坐標(biāo)范圍內(nèi)生成隨機(jī)坐標(biāo)值,動(dòng)態(tài)目標(biāo)
移動(dòng)到隨機(jī)計(jì)算的坐標(biāo)位置上。
===================================SuperMap Objects 示范工程說(shuō)明結(jié)束===================================== }
unit untMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
SuperMapLib_TLB, StdCtrls, OleCtrls, ExtCtrls;
type
TfrmMain = class(TForm)
SuperMap1: TSuperMap;
btnZoomin: TButton;
btnZoomout: TButton;
btnViewentire: TButton;
btnPan: TButton;
btnSelect: TButton;
btnGPS: TButton;
SuperWorkspace1: TSuperWorkspace;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure btnZoominClick(Sender: TObject);
procedure btnZoomoutClick(Sender: TObject);
procedure btnViewentireClick(Sender: TObject);
procedure btnPanClick(Sender: TObject);
procedure btnSelectClick(Sender: TObject);
procedure btnGPSClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
const scl: Integer = 50;
{$R *.DFM}
procedure TfrmMain.FormCreate(Sender: TObject);
var
objds:sodatasource;
objdt:sodataset;
begin
frmMain.SuperMap1.Connect(frmMain.SuperWorkspace1.Handle);
objds:=frmMain.SuperWorkspace1.OpenDataSource('..\data\world\world.sdb','world',scesdbplus,false);
if objds=nil then
begin
showmessage('打開(kāi)數(shù)據(jù)源出錯(cuò)!');
exit;
end;
objdt:=objds.Datasets[1];
if objdt=nil then
begin
showmessage('打開(kāi)數(shù)據(jù)集出錯(cuò)!');
exit;
end;
frmMain.SuperMap1.Layers.AddDataset(objdt,true);
frmMain.SuperMap1.Refresh;
//釋放變量
objds:=nil;
objdt:=nil;
end;
procedure TfrmMain.btnZoominClick(Sender: TObject);
begin
frmMain.SuperMap1.Action:=scazoomin;
end;
procedure TfrmMain.btnZoomoutClick(Sender: TObject);
begin
frmMain.SuperMap1.Action:=scazoomout;
end;
procedure TfrmMain.btnViewentireClick(Sender: TObject);
begin
frmMain.SuperMap1.ViewEntire;
end;
procedure TfrmMain.btnPanClick(Sender: TObject);
begin
frmMain.SuperMap1.Action:=scapan;
end;
procedure TfrmMain.btnSelectClick(Sender: TObject);
begin
frmMain.SuperMap1.Action:=scaselect;
end;
procedure TfrmMain.btnGPSClick(Sender: TObject);
begin
if frmMain.btnGPS.Caption='GPS跟蹤' then
begin
Timer1.Enabled := True;
frmMain.btnGPS.Caption:='停止跟蹤';
end
begin
frmMain.btnGPS.Caption:='GPS跟蹤';
Timer1.Enabled := false;
end;
end;
procedure location(x:double;y:double;spm:Tsupermap);
var
pnt:sogeopoint;
style:sostyle;
begin
spm.TrackingLayer.ClearEvents;
pnt:=cosogeopoint.Create;
style:=cosostyle.create;
pnt.x:=x;
pnt.y:=y;
style.pencolor:=clRed;
style.SymbolSize:=40;
style.SymbolStyle:=1110;
if pnt.xspm.ViewBounds.Right then spm.Pan2(pnt.x-spm.ViewBounds.CenterPoint.x,0)
else if pnt.y>spm.ViewBounds.Top then spm.Pan2(0,pnt.y-spm.ViewBounds.CenterPoint.y)
else if pnt.y Right Then CoordinateX := Right;
If value1 < Left Then CoordinateX := Left;
midd1:= value1;
end;
function coordinateY(dt:sodataset;spm:Tsupermap):double;
var
Top:Double;
Bottom:Double;
i:extended;
value2:double;
{$j+}
const midd:double=100;
{$j-}
begin
Randomize;
i:= 1 + Int(random(2)); // y軸方向的隨機(jī)據(jù)獲取
Top := dt.Bounds.Top;
Bottom := dt.Bounds.Bottom;
If i= 1 Then
begin
CoordinateY := midd + ((Bottom - Top) / Scl)*random(2); // y軸方向加操作
value2:=midd + ((Bottom - Top) / Scl)*random(2);
end;
If i= 2 Then
begin
CoordinateY := midd - ((Bottom - Top) / Scl)*random(2); // y軸方向減操作
value2:=midd - ((Bottom - Top) / Scl)*random(2);
end;
If value2 > Top Then CoordinateY := Top;
If value2 < Bottom Then CoordinateY := Bottom;
midd := value2;
end;
procedure TfrmMain.Timer1Timer(Sender: TObject);
var
objdt:sodataset;
begin
objdt:=frmMain.SuperMap1.Layers[1].Dataset;
location(coordinateX(objdt,frmMain.supermap1),coordinateY(objdt,frmMain.supermap1),supermap1);
objdt:=nil;
end;
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
frmMain.SuperMap1.Close;
frmMain.SuperMap1.Disconnect;
frmMain.SuperWorkspace1.Close;
end;
end.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -