ITS00MAPF.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531
  1. //---------------------------------------------------------------------------
  2. #ifndef ITS00MAPFH
  3. #define ITS00MAPFH
  4. //---------------------------------------------------------------------------
  5. #include <Classes.hpp>
  6. #include <Controls.hpp>
  7. #include <StdCtrls.hpp>
  8. #include <Forms.hpp>
  9. #include <DB.hpp>
  10. #include <DBClient.hpp>
  11. #include <Provider.hpp>
  12. #include <ADODB.hpp>
  13. #include <ExtCtrls.hpp>
  14. #include <Graphics.hpp>
  15. #include <ImgList.hpp>
  16. #include <Menus.hpp>
  17. #include <pngimage.hpp>
  18. #include <map.h>
  19. #include <vector.h>
  20. #include "ImageBtn.h"
  21. //---------------------------------------------------------------------------
  22. //---------------------------------------------------------------------------
  23. #include "DataTypesF.h"
  24. #include "WindowMsgF.h"
  25. #include <OleCtrls.hpp>
  26. #include "cxCheckBox.hpp"
  27. #include "cxContainer.hpp"
  28. #include "cxControls.hpp"
  29. #include "cxEdit.hpp"
  30. #include "cxGraphics.hpp"
  31. #include "cxGroupBox.hpp"
  32. #include "cxLabel.hpp"
  33. #include "cxLookAndFeelPainters.hpp"
  34. #include "cxLookAndFeels.hpp"
  35. #include "cxMaskEdit.hpp"
  36. #include "cxProgressBar.hpp"
  37. #include "cxSpinEdit.hpp"
  38. #include "cxTextEdit.hpp"
  39. #include "dxGDIPlusClasses.hpp"
  40. #include "dxSkinBlack.hpp"
  41. #include "dxSkinBlue.hpp"
  42. #include "dxSkinsCore.hpp"
  43. #include "GMClasses.hpp"
  44. #include "GMLinkedComponents.hpp"
  45. #include "GMMap.hpp"
  46. #include "GMMapVCL.hpp"
  47. #include "GMMarker.hpp"
  48. #include "GMMarkerVCL.hpp"
  49. #include "GMPolygonVCL.hpp"
  50. #include "GMPolyline.hpp"
  51. #include "GMPolylineVCL.hpp"
  52. #include <Dialogs.hpp>
  53. #include "cxButtons.hpp"
  54. #include <SHDocVw.hpp>
  55. //---------------------------------------------------------------------------
  56. /*
  57. ******************************************************************************
  58. * Define constant
  59. ******************************************************************************
  60. */
  61. /*
  62. * 소통정보 레이어 최대갯수
  63. */
  64. #define MAX_LAYERS 7
  65. /*
  66. * 이전/다음 구현을 위한 구조체 선언(정적 이중링크로 구현)
  67. */
  68. #define D_EXT_QUEUE_SIZE 256 //512//1024/2048
  69. #define D_EXT_QUEUE_MASK (D_EXT_QUEUE_SIZE-1)
  70. /*
  71. * 레이어 Extent 정보
  72. */
  73. enum TXiMapOperation { Nothing, OnZoomIn, OnZoomOut, OnPanSt, OnDistance, OnSelect, OnGeoQuery, OnEditting, OnCircle, OnShortPath, OnArea, OnInsert, OnFindEvent, OnNearFind, OnUserDefine };
  74. struct TLinkTrfGrd
  75. {
  76. public:
  77. Graphics::TColor SpdCOLOR;
  78. int MinSpeed;
  79. int MaxSpeed;
  80. };
  81. struct TDBLinkColor
  82. {
  83. public:
  84. TLinkTrfGrd GDLOW;
  85. TLinkTrfGrd GDMID;
  86. TLinkTrfGrd GDHIG;
  87. };
  88. struct TUTISLinkGrade
  89. {
  90. public:
  91. TDBLinkColor road101;
  92. TDBLinkColor road102;
  93. TDBLinkColor road103;
  94. TDBLinkColor road104;
  95. TDBLinkColor road105;
  96. TDBLinkColor road106;
  97. TDBLinkColor road107;
  98. };
  99. struct TDDPoint
  100. {
  101. public:
  102. double X;
  103. double Y;
  104. };
  105. struct TDDRect
  106. {
  107. union
  108. {
  109. struct
  110. {
  111. TDDPoint MinXY;
  112. TDDPoint MaxXY;
  113. };
  114. struct
  115. {
  116. double MinX;
  117. double MinY;
  118. double MaxX;
  119. double MaxY;
  120. };
  121. };
  122. };
  123. typedef struct
  124. {
  125. bool bExtent;
  126. short userIdx;
  127. short currIdx;
  128. TDDRect extent[D_EXT_QUEUE_SIZE+1];
  129. } EXTENT_LIST_QUEUE;
  130. typedef struct
  131. {
  132. short Zoom;
  133. double Lat;
  134. double Lng;
  135. } TGisExtent;
  136. typedef struct
  137. {
  138. bool Extent;
  139. short TotCnt;
  140. short CurIdx;
  141. TGisExtent extent[D_EXT_QUEUE_SIZE+1];
  142. } GIS_EXTENT_QUEUE;
  143. //---------------------------------------------------------------------------
  144. class TITS00MAP : public TForm
  145. {
  146. __published: // IDE-managed Components
  147. TTimer *TmrShow;
  148. TTimer *TmrSelect;
  149. TTimer *TmrLinkSelect;
  150. TPopupMenu *pmuCctv;
  151. TMenuItem *MnuCctvId;
  152. TMenuItem *N6;
  153. TMenuItem *mnuStopImage;
  154. TMenuItem *mnuCctvCam;
  155. TMenuItem *mnuCctvPingCtrl;
  156. TPopupMenu *pmuVms;
  157. TMenuItem *mnuVmsMsg;
  158. TMenuItem *mnuVmsCam;
  159. TMenuItem *mnuVmsPingCtrl;
  160. TPopupMenu *pmuRse;
  161. TMenuItem *pmuRsePing;
  162. TMenuItem *MnuVmsId;
  163. TMenuItem *N3;
  164. TMenuItem *MnuRseId;
  165. TMenuItem *N4;
  166. TMenuItem *NetworkPing1;
  167. TMenuItem *mnuCctvPingCapt;
  168. TMenuItem *mnuCctvPingEncd;
  169. TMenuItem *mnuCctvPingStrm;
  170. TMenuItem *NetworkPing2;
  171. TMenuItem *mnuVmsPingWeb;
  172. TPopupMenu *pmuWebCam;
  173. TMenuItem *MnuWebCamId;
  174. TMenuItem *MenuItem2;
  175. TMenuItem *MnuWebCam;
  176. TMenuItem *MenuItem5;
  177. TMenuItem *MnuWebCamPing;
  178. TPopupMenu *pmuVds;
  179. TMenuItem *MnuVdsId;
  180. TMenuItem *MenuItem3;
  181. TMenuItem *MenuItem4;
  182. TPopupMenu *pmuAvi;
  183. TMenuItem *MnuAviId;
  184. TMenuItem *MenuItem7;
  185. TMenuItem *MenuItem8;
  186. TPopupMenu *pmuDsrc;
  187. TMenuItem *MnuDsrcId;
  188. TMenuItem *MenuItem10;
  189. TMenuItem *MenuItem11;
  190. TTimer *TmrLblTraffic;
  191. TTimer *TmrRefresh;
  192. TPopupMenu *pmuSigDet;
  193. TMenuItem *MnuSigDetId;
  194. TMenuItem *MenuItem19;
  195. TMenuItem *mmuSigDetPing;
  196. TPopupMenu *pmuSig;
  197. TMenuItem *MnuSigId;
  198. TMenuItem *MenuItem20;
  199. TMenuItem *mmuSigPing;
  200. TPopupMenu *pmuBit;
  201. TMenuItem *MnuBitId;
  202. TMenuItem *MenuItem6;
  203. TMenuItem *mmuBitPing;
  204. TPopupMenu *pmuPis;
  205. TMenuItem *MnuPisId;
  206. TMenuItem *MenuItem13;
  207. TMenuItem *MenuItem21;
  208. TPopupMenu *pmuPcs;
  209. TMenuItem *MnuPcsId;
  210. TMenuItem *MenuItem26;
  211. TMenuItem *MenuItem27;
  212. TGMPolygon *GMPolygonRgn;
  213. TGMPolyline *GMPolyLink;
  214. TGMPolyline *GMPolyIfsc;
  215. TGMPolyline *GMPolyRoad;
  216. TGMMarker *GMMarkerVms;
  217. TGMMarker *GMMarkerVds;
  218. TGMMarker *GMMarkerAcc;
  219. TPanel *PnlMap;
  220. TPanel *PnlProgress;
  221. TcxProgressBar *PbLoadMap;
  222. TPanel *PnlBack;
  223. TPanel *Panel1;
  224. TcxCheckBox *ChkDrawBit;
  225. TcxCheckBox *ChkDrawSig;
  226. TcxCheckBox *ChkDrawPcs;
  227. TcxCheckBox *ChkDrawPis;
  228. TcxCheckBox *ChkDrawSigDet;
  229. TcxCheckBox *ChkWebCam;
  230. TPanel *PnlToolBarxxx;
  231. TGroupBox *GroupBox2;
  232. TcxCheckBox *ChkViewExample;
  233. TcxCheckBox *ChkGisSearch;
  234. TcxCheckBox *ChkToolTip;
  235. TGroupBox *GrpFacility;
  236. TcxCheckBox *ChkDrawCtv;
  237. TcxCheckBox *ChkDrawAvi;
  238. TcxCheckBox *ChkDrawDsrc;
  239. TcxCheckBox *ChkDrawPark;
  240. TcxCheckBox *ChkDrawEvent;
  241. TcxCheckBox *ChkDrawRse;
  242. TcxCheckBox *ChkDrawWthr;
  243. TGroupBox *GrpPos;
  244. TLabel *Label11;
  245. TLabel *Label12;
  246. TcxSpinEdit *SePosY;
  247. TcxSpinEdit *SePosX;
  248. TPanel *PnlMapInfo;
  249. TImage *ImgDesc27;
  250. TImage *ImgDesc37;
  251. TLabel *Label16;
  252. TLabel *Label3;
  253. TLabel *LblZoomLevel;
  254. TLabel *LblLinkLevel;
  255. TcxGroupBox *panRemark;
  256. TGroupBox *GrpRse;
  257. TImage *ImgRseN;
  258. TImage *ImgRseC;
  259. TImage *Image1;
  260. TcxLabel *cxLabel1;
  261. TcxLabel *cxLabel2;
  262. TcxLabel *cxLabel17;
  263. TGroupBox *GroupBox7;
  264. TImage *ImgInc01;
  265. TImage *ImgInc02;
  266. TImage *ImgInc03;
  267. TImage *ImgInc04;
  268. TcxLabel *cxLabel9;
  269. TcxLabel *cxLabel10;
  270. TcxLabel *cxLabel11;
  271. TcxLabel *cxLabel12;
  272. TGroupBox *GroupBox8;
  273. TPanel *PnlTrf01;
  274. TPanel *PnlTrf02;
  275. TPanel *PnlTrf03;
  276. TPanel *PnlTrf00;
  277. TcxLabel *cxLabel13;
  278. TcxLabel *cxLabel14;
  279. TcxLabel *cxLabel15;
  280. TcxLabel *cxLabel16;
  281. TGroupBox *GroupBox9;
  282. TImage *ImgCctvN;
  283. TImage *ImgCctvC;
  284. TImage *ImgCctvM;
  285. TcxLabel *cxLabel3;
  286. TcxLabel *cxLabel4;
  287. TcxLabel *cxLabel5;
  288. TGroupBox *GroupBox10;
  289. TImage *ImgVmsN;
  290. TImage *ImgVmsC;
  291. TImage *ImgVmsM;
  292. TcxLabel *cxLabel6;
  293. TcxLabel *cxLabel7;
  294. TcxLabel *cxLabel8;
  295. TGroupBox *GrpWeb;
  296. TImage *Image2;
  297. TImage *Image3;
  298. TImage *Image4;
  299. TcxLabel *cxLabel18;
  300. TcxLabel *cxLabel19;
  301. TcxLabel *cxLabel20;
  302. TGroupBox *GrpDsrc;
  303. TImage *Image5;
  304. TImage *Image6;
  305. TImage *Image7;
  306. TcxLabel *cxLabel21;
  307. TcxLabel *cxLabel22;
  308. TcxLabel *cxLabel23;
  309. TGroupBox *GrpAvi;
  310. TImage *Image8;
  311. TImage *Image9;
  312. TImage *Image10;
  313. TcxLabel *cxLabel24;
  314. TcxLabel *cxLabel25;
  315. TcxLabel *cxLabel26;
  316. TGroupBox *GrpVds;
  317. TImage *Image11;
  318. TImage *Image12;
  319. TImage *Image13;
  320. TcxLabel *cxLabel27;
  321. TcxLabel *cxLabel28;
  322. TcxLabel *cxLabel29;
  323. TGroupBox *GroupBox4;
  324. TImage *ImgCurrent;
  325. TcxLabel *LblCurrTemp;
  326. TGroupBox *GroupBox5;
  327. TImage *ImgForecast;
  328. TcxLabel *LblMaxFore;
  329. TcxLabel *LblMinFore;
  330. TcxLabel *lblStep1;
  331. TcxLabel *lblStep2;
  332. TPanel *PnlToolbar;
  333. TcxButton *BtnMapToJpg;
  334. TcxButton *BtnMoveMapToCenter;
  335. TcxButton *BtnZoomIn;
  336. TcxButton *BtnZoomOut;
  337. TcxButton *BtnRefresh;
  338. TcxButton *BtnMoveDefBounds;
  339. TcxButton *BtnZoomPrev;
  340. TcxButton *BtnZoomNext;
  341. TcxButton *BtnIconSelect;
  342. TcxLabel *lblGap1;
  343. TcxLabel *lblGap2;
  344. TPanel *PnlGisTool;
  345. TcxCheckBox *ChkDrawCenter;
  346. TcxCheckBox *ChkDrawVms;
  347. TcxCheckBox *ChkDrawIncident;
  348. TcxCheckBox *ChkDrawVds;
  349. TcxCheckBox *ChkTrafficLayer;
  350. TcxLabel *lblGap3;
  351. TPanel *PnlLoading;
  352. TPanel *PnlZoom;
  353. TWebBrowser *WebBrowser1;
  354. TGMMap *GMMap1;
  355. TSaveDialog *SaveDialog1;
  356. TListBox *ListBox1;
  357. TcxLabel *LblTraffic;
  358. TGMMarker *GMMarkerPos;
  359. TGMPolyline *GMPolySelect;
  360. void __fastcall FormDestroy(TObject *Sender);
  361. void __fastcall FormShow(TObject *Sender);
  362. void __fastcall TmrShowTimer(TObject *Sender);
  363. void __fastcall BtnRefreshClick(TObject *Sender);
  364. void __fastcall ChkDrawGisClick(TObject *Sender);
  365. void __fastcall TmrSelectTimer(TObject *Sender);
  366. void __fastcall TmrLinkSelectTimer(TObject *Sender);
  367. void __fastcall mnuStopImageClick(TObject *Sender);
  368. void __fastcall mnuFacilityPingClick(TObject *Sender);
  369. void __fastcall pmuFacilityPopup(TObject *Sender);
  370. void __fastcall mnuCctvCamClick(TObject *Sender);
  371. void __fastcall mnuVmsMsgClick(TObject *Sender);
  372. void __fastcall mnuVmsCamClick(TObject *Sender);
  373. void __fastcall ChkGisSearchClick(TObject *Sender);
  374. void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
  375. void __fastcall panRemarkMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
  376. void __fastcall ChkViewExamplePropertiesChange(TObject *Sender);
  377. void __fastcall MnuWebCamClick(TObject *Sender);
  378. void __fastcall TmrLblTrafficTimer(TObject *Sender);
  379. void __fastcall TmrRefreshTimer(TObject *Sender);
  380. void __fastcall GMMarkerVmsRightClick(TObject *Sender, TLatLng *LatLng, int Index,
  381. TLinkedComponent *LinkedComponent);
  382. void __fastcall GMMarkerVdsRightClick(TObject *Sender, TLatLng *LatLng, int Index,
  383. TLinkedComponent *LinkedComponent);
  384. void __fastcall GMMap1AfterPageLoaded(TObject *Sender, bool First);
  385. void __fastcall GMMap1BoundsChanged(TObject *Sender, TLatLngBounds *NewBounds);
  386. void __fastcall GMMap1CenterChanged(TObject *Sender, TLatLng *LatLng, double X,
  387. double Y);
  388. void __fastcall GMMap1Click(TObject *Sender, TLatLng *LatLng, double X, double Y);
  389. void __fastcall GMMap1DblClick(TObject *Sender, TLatLng *LatLng, double X, double Y);
  390. void __fastcall GMMap1Drag(TObject *Sender);
  391. void __fastcall GMMap1DragEnd(TObject *Sender);
  392. void __fastcall GMMap1DragStart(TObject *Sender);
  393. void __fastcall GMMap1MouseMove(TObject *Sender, TLatLng *LatLng, double X, double Y);
  394. void __fastcall GMMap1RightClick(TObject *Sender, TLatLng *LatLng, double X,
  395. double Y);
  396. void __fastcall GMMap1ZoomChanged(TObject *Sender, int NewZoom);
  397. void __fastcall BtnMapToJpgClick(TObject *Sender);
  398. void __fastcall BtnMoveMapToCenterClick(TObject *Sender);
  399. void __fastcall BtnMoveDefBoundsClick(TObject *Sender);
  400. void __fastcall BtnZoomInClick(TObject *Sender);
  401. void __fastcall BtnZoomOutClick(TObject *Sender);
  402. void __fastcall BtnZoomPrevClick(TObject *Sender);
  403. void __fastcall BtnZoomNextClick(TObject *Sender);
  404. void __fastcall PnlToolbarDblClick(TObject *Sender);
  405. void __fastcall ListBox1DblClick(TObject *Sender);
  406. void __fastcall GMPolyLinkClick(TObject *Sender, TLatLng *LatLng, int Index,
  407. TLinkedComponent *LinkedComponent);
  408. void __fastcall BtnIconSelectClick(TObject *Sender);
  409. private: // User declarations
  410. public:
  411. GIS_EXTENT_QUEUE FExtent; // 이전/다음 정보를 저장할 전역변수
  412. TGisExtent FPrev; // 이전
  413. TLatLng *FCenLatLng;
  414. TLatLng *FMinLatLng;
  415. TLatLng *FMaxLatLng;
  416. TLatLngBounds *FMapBounds;
  417. TPolyline* FSelLink;
  418. TColor FSelColor;
  419. int FMapZoom;
  420. int FInitMapZoom;
  421. double FCenterLat;
  422. double FCenterLng;
  423. bool FIsDragginStart;
  424. bool FIsDragginEnd;
  425. bool FIsDragging;
  426. double FMoveLat, FMoveLng;
  427. void __fastcall InitMap();
  428. void __fastcall AddExtentQ(double ALat, double ALng, int FZoom);
  429. void __fastcall PrevExtentQ();
  430. void __fastcall NextExtentQ();
  431. void __fastcall RemoveMarker(TGMMarker *AMarker);
  432. void __fastcall ShowHideLink(TGMPolyline* APoly);
  433. bool MapInit;
  434. bool MapStart;
  435. bool ModeSelect;
  436. // For Map
  437. int FMapLinkLevel;
  438. //마우스 제어 플래그
  439. TPoint m_ptDown;
  440. bool m_bMouseDown;
  441. bool m_bMoveCenter;
  442. bool m_bCalcMode;
  443. bool m_bCalcCont;
  444. bool FIsBrowserLoading;
  445. public:
  446. public: // User declarations
  447. __fastcall TITS00MAP(TComponent* Owner, TForm *ParentForm);
  448. void __fastcall ShowLayerEditForm();
  449. void __fastcall LoadLocalSkin();
  450. void __fastcall CommClose();
  451. bool __fastcall FormInit();
  452. void __fastcall LoadGisMap();
  453. void __fastcall GetGisTrafficColor(TUTISLinkGrade &pUtisLinkColor);
  454. void __fastcall SetGisTrafficColor();
  455. void __fastcall RefreshMapTraffic();
  456. // Object Select
  457. TDDPoint m_ptSelect;
  458. void __fastcall SelectObjectByPos(double dPosX, double dPosY, bool bArrow=false);
  459. void __fastcall RefreshGisLink();
  460. bool __fastcall SelectLinkById(int ALinkLevel, String AId, bool AHide=false);
  461. void __fastcall ShowCctvStopImage(String AId, TPoint pt);
  462. void __fastcall ShowCctvCamera(String AId, TPoint pt);
  463. void __fastcall ShowVmsMessage(String AId, TPoint pt);
  464. void __fastcall ShowVmsCamera(String AId, TPoint pt);
  465. void __fastcall ShowWebCamera(String AId, TPoint pt);
  466. void __fastcall ShowLinkDetailInfo(String sLinkId, int nLinkLevel);
  467. void __fastcall UpdateFacilityStatus();
  468. void __fastcall UpdateEventStatus(); //남양주 블랙박스 이벤트 상태
  469. String FSelId;
  470. void __fastcall ShowHideFacility(TObject *Sender);
  471. void __fastcall ShowHideTraffic();
  472. void __fastcall OnMapPopupMenu(String AType, String AId, String APosX, String APosY, String AInfo);
  473. void __fastcall SelGisItem(int AType, String AId);
  474. void __fastcall InitGisRegion();
  475. void __fastcall InitGisTraffic();
  476. void __fastcall UpdateGisVms();
  477. void __fastcall UpdateGisVds();
  478. void __fastcall UpdateGisIncident();
  479. void __fastcall DebugList(String AMsg);
  480. };
  481. //---------------------------------------------------------------------------
  482. extern PACKAGE TITS00MAP *ITS00MAP;
  483. //---------------------------------------------------------------------------
  484. #endif