Delphi 开发Arcgis 之 放大缩小漫游 操作

来源:互联网 发布:mac与虚拟机共享文件 编辑:程序博客网 时间:2024/04/30 10:06

  放大缩小漫游等操作当然可以自己使用toolbar中的控件关联,也可以自己写代码控制,用toolbar控制请查看我的前面的博客

1. 创建工程,放置arcgismapcontrol到form中,设置地图信息(参看前面的博客)

2.直接贴代码吧,

unit Unit3;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, esriControls_TLB,esriGeometry_TLB, OleCtrls, ExtCtrls, Buttons, ToolWin, ComCtrls,ComObj,ActiveX;type  TMapState = (msNone,msZoomIn,msZoomOut,msMove);  TForm3 = class(TForm)    Panel1: TPanel;    Panel2: TPanel;    ArcGisMapControl1: TArcGisMapControl;    ArcGisLicenseControl1: TArcGisLicenseControl;    CoolBar1: TCoolBar;    SpeedButton1: TSpeedButton;    SpeedButton2: TSpeedButton;    SpeedButton3: TSpeedButton;    SpeedButton4: TSpeedButton;    procedure SpeedButton1Click(Sender: TObject);    procedure ArcGisMapControl1MouseDown(ASender: TObject; button, shift, X,      Y: Integer; mapX, mapY: Double);    procedure ArcGisMapControl1MouseUp(ASender: TObject; button, shift, X,      Y: Integer; mapX, mapY: Double);    procedure ArcGisMapControl1MouseMove(ASender: TObject; button, shift, X,      Y: Integer; mapX, mapY: Double);    procedure SpeedButton2Click(Sender: TObject);    procedure SpeedButton3Click(Sender: TObject);    procedure SpeedButton4Click(Sender: TObject);  private    { Private declarations }  public     state :TMapState;     spt,dpt:TPoint;    { Public declarations }  end;var  Form3: TForm3;implementation{$R *.dfm}procedure TForm3.ArcGisMapControl1MouseDown(ASender: TObject; button, shift, X,  Y: Integer; mapX, mapY: Double);var  zoomrt:TRect;  ipcurExt,ipTrkExt,ipNewExt:IEnvelope;  xC1,xC2,yC1,yC2,xT1,xT2,yT1,yT2,xN1,xN2,yN1,yN2:double;begin  case state of    msNone: ;    msZoomIn: begin //缩小      ArcGisMapControl1.ActiveView.Get_Extent(ipcurExt); //取得当前显示区域      ipTrkExt:= ArcGisMapControl1.TrackRectangle;//框定的矩形区域      ipcurExt.QueryCoords(xc1,yc1,xc2,yc2); //      ipTrkExt.QueryCoords(xt1,yt1,xt2,yt2);      xN1 := xc1 - (xt1-xc1)*((xc2-xc1)/(xt2-xt1));      yN1 := yc1 - (yt1-yc1)*((yc2-yc1)/(yt2-yt1));      xN2 := xc2 - (xt2-xc2)*((xc2-xc1)/(xt2-xt1));      yN2 := yc2 - (yt2-yc2)*((yc2-yc1)/(yt2-yt1));      CoCreateInstance(Class_Envelope,nil,CLSCTX_INPROC_SERVER,iid_IEnvelope,ipNewExt);      ipNewExt.PutCoords(xn1,yn1,xn2,yn2);     ArcGisMapControl1.ActiveView.Set_Extent(ipNewExt);     end;    msZoomOut: begin  //放大       ArcGisMapControl1.ActiveView.Set_Extent(ArcGisMapControl1.TrackRectangle);     end ;    msMove:begin ArcGisMapControl1.Pan end ;//漫游  end;   ArcGisMapControl1.ActiveView.Refresh;end;procedure TForm3.ArcGisMapControl1MouseMove(ASender: TObject; button, shift, X,  Y: Integer; mapX, mapY: Double);begin  case state of    msNone: ArcGisMapControl1.MousePointer := 0;    msZoomIn: ArcGisMapControl1.MousePointer := 52;    msZoomOut: ArcGisMapControl1.MousePointer := 51;    msMove: ArcGisMapControl1.MousePointer := 53 ;  end;end;procedure TForm3.ArcGisMapControl1MouseUp(ASender: TObject; button, shift, X,  Y: Integer; mapX, mapY: Double);begin  case state of    msNone: ;    msZoomIn:;// ArcGisMapControl1.Extent := ArcGisMapControl1.TrackRectangle;    msZoomOut: ArcGisMapControl1.MousePointer := 51;    msMove: ;  end;end;procedure TForm3.SpeedButton1Click(Sender: TObject);begin  state := msZoomOut;//放大end;procedure TForm3.SpeedButton2Click(Sender: TObject);begin   state := msZoomin;//缩小end;procedure TForm3.SpeedButton3Click(Sender: TObject);begin  state := msmove;//漫游end;procedure TForm3.SpeedButton4Click(Sender: TObject);begin  state := msnone;end;end.


0 0
原创粉丝点击