ITS00MAPF.cpp 78 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <OleCtrls.hpp>
  4. #include "ITSSkinF.h"
  5. #include "ITSUtilF.h"
  6. #include "CDSTrafficGradeF.h"
  7. #include "CDSFacilityF.h"
  8. #include "CDSIncidentF.h"
  9. #include "CDSTrafficF.h"
  10. #include "CDSParkingF.h"
  11. #pragma hdrstop
  12. //#define IPictureDisp Axvlc_tlb::IPictureDisp
  13. #include "ITS00MAPF.h"
  14. #include "ITS0000MF.h"
  15. #include "FrmCctvImgF.h"
  16. #include "FrmWebCamF.h"
  17. #include "FrmVmsMsgF.h"
  18. #include "FrmLinkInfoF.h"
  19. #include "FrmGisSearchF.h"
  20. #include "FrmMainF.h"
  21. #include "CommFlashF.h"
  22. #include "FrmCctvCamF.h"
  23. #include "FrmVmsCamF.h"
  24. #include "FrmIcsCamF.h"
  25. //---------------------------------------------------------------------------
  26. #pragma package(smart_init)
  27. #pragma link "cxCheckBox"
  28. #pragma link "cxContainer"
  29. #pragma link "cxControls"
  30. #pragma link "cxEdit"
  31. #pragma link "cxGraphics"
  32. #pragma link "cxGroupBox"
  33. #pragma link "cxLabel"
  34. #pragma link "cxLookAndFeelPainters"
  35. #pragma link "cxLookAndFeels"
  36. #pragma link "cxMaskEdit"
  37. #pragma link "cxProgressBar"
  38. #pragma link "cxSpinEdit"
  39. #pragma link "cxTextEdit"
  40. #pragma link "dxGDIPlusClasses"
  41. #pragma link "dxSkinBlack"
  42. #pragma link "dxSkinBlue"
  43. #pragma link "dxSkinCaramel"
  44. #pragma link "dxSkinCoffee"
  45. #pragma link "dxSkinDarkRoom"
  46. #pragma link "dxSkinDarkSide"
  47. #pragma link "dxSkinFoggy"
  48. #pragma link "dxSkinGlassOceans"
  49. #pragma link "dxSkiniMaginary"
  50. #pragma link "dxSkinLilian"
  51. #pragma link "dxSkinLiquidSky"
  52. #pragma link "dxSkinLondonLiquidSky"
  53. #pragma link "dxSkinMcSkin"
  54. #pragma link "dxSkinMoneyTwins"
  55. #pragma link "dxSkinOffice2007Black"
  56. #pragma link "dxSkinOffice2007Blue"
  57. #pragma link "dxSkinOffice2007Green"
  58. #pragma link "dxSkinOffice2007Pink"
  59. #pragma link "dxSkinOffice2007Silver"
  60. #pragma link "dxSkinOffice2010Black"
  61. #pragma link "dxSkinOffice2010Blue"
  62. #pragma link "dxSkinOffice2010Silver"
  63. #pragma link "dxSkinsCore"
  64. #pragma link "dxSkinSeven"
  65. #pragma link "dxSkinSharp"
  66. #pragma link "dxSkinSilver"
  67. #pragma link "dxSkinStardust"
  68. #pragma link "ShockwaveEx"
  69. #pragma link "ShockwaveFlashObjects_TLB"
  70. #pragma resource "*.dfm"
  71. //---------------------------------------------------------------------------
  72. TITS00MAP *ITS00MAP = NULL;
  73. String g_sTrafficSql[MAX_LAYERS] = {
  74. "0************************************************************************\r\n",
  75. "1************************************************************************\r\n",
  76. "SELECT A.ROAD_ID AS LINKID, NVL(B.SPED, 0) AS SPEED, \r\n"
  77. " NVL(B.PRCN_DT, '19000101000000') AS REGDATE, \r\n"
  78. " NVL(B.DATA_NUM, 0) AS DATACNT, \r\n"
  79. " NVL(B.TRVL_HH, 0) AS TRVTM \r\n"
  80. " FROM TB_ROAD A, \r\n"
  81. " (SELECT * \r\n"
  82. " FROM TB_ROAD_TRAF \r\n"
  83. " WHERE PRCN_DT > TO_CHAR(SYSDATE - 5 / 1440, 'YYYYMMDDHH24MISS') \r\n"
  84. " ) B \r\n"
  85. " WHERE A.ROAD_ID = B.ROAD_ID(+) \r\n",
  86. "SELECT A.IFSC_ID AS LINKID, NVL(B.SPED, 0) AS SPEED, \r\n"
  87. " NVL(B.PRCN_DT, '19000101000000') AS REGDATE, \r\n"
  88. " NVL(B.DATA_NUM, 0) AS DATACNT, \r\n"
  89. " NVL(B.TRVL_HH, 0) AS TRVTM \r\n"
  90. " FROM TB_IFSC A, \r\n"
  91. " (SELECT * \r\n"
  92. " FROM TB_IFSC_TRAF \r\n"
  93. " WHERE PRCN_DT > TO_CHAR(SYSDATE - 5 / 1440, 'YYYYMMDDHH24MISS') \r\n"
  94. " ) B \r\n"
  95. " WHERE A.IFSC_ID = B.IFSC_ID(+) \r\n",
  96. "4************************************************************************\r\n",
  97. "SELECT A.LINK_ID AS LINKID, NVL(B.SPED, 0) AS SPEED, \r\n"
  98. " NVL(B.PRCN_DT, '19000101000000') AS REGDATE, \r\n"
  99. " NVL(B.DATA_NUM, 0) AS DATACNT, \r\n"
  100. " NVL(B.TRVL_HH, 0) AS TRVTM \r\n"
  101. " FROM TB_LINK A, \r\n"
  102. " (SELECT * \r\n"
  103. " FROM TB_LINK_TRAF \r\n"
  104. " WHERE PRCN_DT > TO_CHAR(SYSDATE - 5 / 1440, 'YYYYMMDDHH24MISS') \r\n"
  105. " ) B \r\n"
  106. " WHERE A.LINK_ID = B.LINK_ID(+) \r\n",
  107. "6************************************************************************\r\n",
  108. };
  109. //---------------------------------------------------------------------------
  110. __fastcall TITS00MAP::TITS00MAP(TComponent* Owner, TForm *ParentForm)
  111. : TForm(Owner)
  112. {
  113. ::CoInitialize(NULL);
  114. ITSSkin_Load(this);
  115. LoadLocalSkin();
  116. ShockwaveFlash1->Align = alClient;
  117. panRemark->Visible = false;
  118. m_nMapLevel = 1;
  119. //마우스 제어 플래그 초기화
  120. m_bMouseDown = false;
  121. m_bMoveCenter = false;
  122. m_bCalcMode = false;
  123. m_bCalcCont = false;
  124. m_ptDown.x = m_ptDown.y = 0;
  125. MapInit = false;
  126. MapStart = false;
  127. ModeSelect = false;
  128. LoadConfig();
  129. //LoadMap();
  130. }
  131. //---------------------------------------------------------------------------
  132. /*
  133. * 환경설정정보 로딩
  134. *
  135. * arguments
  136. *
  137. * return
  138. * void
  139. */
  140. void __fastcall TITS00MAP::LoadConfig()
  141. {
  142. #if 0
  143. TIniFile *pIniFile = NULL;
  144. String sIniFile = ChangeFileExt(ExtractFileName(Application->ExeName), ".ini");
  145. String sCfgFile = ExtractFilePath(Application->ExeName) + "\\cfg\\" + sIniFile;
  146. try
  147. {
  148. try
  149. {
  150. pIniFile = new TIniFile(sCfgFile);
  151. // 표출이미지 로딩
  152. //LoadImageFile(pIniFile->ReadString("IMAGE", "CENTER", ""), ImgOffice);
  153. LoadImageFile(pIniFile->ReadString("IMAGE", "RSE_N", ""), ImgRseN);
  154. LoadImageFile(pIniFile->ReadString("IMAGE", "RSE_C", ""), ImgRseC);
  155. LoadImageFile(pIniFile->ReadString("IMAGE", "CCTV_N", ""), ImgCctvN);
  156. LoadImageFile(pIniFile->ReadString("IMAGE", "CCTV_C", ""), ImgCctvC);
  157. LoadImageFile(pIniFile->ReadString("IMAGE", "CCTV_M", ""), ImgCctvM);
  158. LoadImageFile(pIniFile->ReadString("IMAGE", "VMS_N", ""), ImgVmsN);
  159. LoadImageFile(pIniFile->ReadString("IMAGE", "VMS_C", ""), ImgVmsC);
  160. LoadImageFile(pIniFile->ReadString("IMAGE", "VMS_M", ""), ImgVmsM);
  161. LoadImageFile(pIniFile->ReadString("IMAGE", "INC_01", ""), ImgInc01);
  162. LoadImageFile(pIniFile->ReadString("IMAGE", "INC_02", ""), ImgInc02);
  163. LoadImageFile(pIniFile->ReadString("IMAGE", "INC_03", ""), ImgInc03);
  164. LoadImageFile(pIniFile->ReadString("IMAGE", "INC_04", ""), ImgInc04);
  165. }
  166. __finally
  167. {
  168. if (pIniFile) delete pIniFile;
  169. pIniFile = NULL;
  170. }
  171. }
  172. catch(...)
  173. {
  174. }
  175. #endif
  176. }
  177. //---------------------------------------------------------------------------
  178. void __fastcall TITS00MAP::LoadImageFile(String sImgFile, TImage *pImage)
  179. {
  180. if (sImgFile.Trim() == "") return;
  181. try
  182. {
  183. ImgTemp->Picture->Assign(NULL);
  184. ImgTemp->Picture->LoadFromFile(sImgFile);
  185. pImage->Picture->Assign(pImage->Picture);
  186. ImgTemp->Picture->Assign(NULL);
  187. }
  188. catch(...)
  189. {
  190. }
  191. }
  192. //---------------------------------------------------------------------------
  193. void __fastcall TITS00MAP::LoadMap()
  194. {
  195. try {
  196. ShockwaveFlash1->Stop();
  197. String sFileName = g_AppCfg.flashmap.sMainMap;
  198. ShockwaveFlash1->Movie = sFileName;
  199. ShockwaveFlash1->Play();
  200. MapInit = true;
  201. } catch(...) {}
  202. }
  203. //---------------------------------------------------------------------------
  204. /*
  205. * 메인화면 FormDestroy시 호출되는 Method
  206. * Form의 자원이 해제 되기 이전에 반드시 이 Method가 호출된다.
  207. * 그러므로 최종적으로 자원을 해제 하고자 한다면 이곳에서 처리하는게 확실함.
  208. * parameter
  209. * Sender : Event를 보낸 객체
  210. * return
  211. * None
  212. */
  213. void __fastcall TITS00MAP::FormDestroy(TObject *Sender)
  214. {
  215. try
  216. {
  217. }
  218. catch (...)
  219. {
  220. }
  221. ::CoUninitialize();
  222. }
  223. //---------------------------------------------------------------------------
  224. /*
  225. * form을 보여줄때 호출되는 event 메서드이다.
  226. * arguments
  227. * Sender : event handler 객체
  228. * return
  229. * void
  230. */
  231. void __fastcall TITS00MAP::FormShow(TObject *Sender)
  232. {
  233. Refresh();
  234. FormInit();
  235. Application->ProcessMessages();
  236. TmrShow->Enabled = true;
  237. }
  238. //---------------------------------------------------------------------------
  239. /*
  240. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  241. * Form과 DataModule class를 delete시킨다.
  242. * arguments
  243. *
  244. * return
  245. * void
  246. */
  247. void __fastcall TITS00MAP::CommClose()
  248. {
  249. //ITS00MAP = NULL;
  250. //::CoUninitialize();
  251. }
  252. //---------------------------------------------------------------------------
  253. /*
  254. * Form의 초기화 작업을 수행한다.
  255. * arguments
  256. * void
  257. * return
  258. * void
  259. */
  260. bool __fastcall TITS00MAP::FormInit()
  261. {
  262. memset((char*)&m_PrevExt, 0x00, sizeof(m_PrevExt));
  263. memset((char*)&m_ExtQ, 0x00, sizeof(m_ExtQ));
  264. m_ExtQ.bExtent = true;
  265. m_ExtQ.userIdx = 0;
  266. m_ExtQ.currIdx = 0;
  267. return true;
  268. }
  269. //---------------------------------------------------------------------------
  270. /*
  271. * Form의 Skin 초기화 작업을 수행한다.
  272. * arguments
  273. * void
  274. * return
  275. * void
  276. */
  277. void __fastcall TITS00MAP::LoadLocalSkin()
  278. {
  279. //PnlMenu->ParentColor = false;
  280. //PnlMenu->Color = 0x00FF9D62;
  281. PnlTrf00->ParentColor = false;
  282. PnlTrf00->Color = clSilver;
  283. PnlTrf01->ParentColor = false;
  284. PnlTrf01->Color = clLime;
  285. PnlTrf02->ParentColor = false;
  286. PnlTrf02->Color = clYellow;
  287. PnlTrf03->ParentColor = false;
  288. PnlTrf03->Color = clRed;
  289. /*
  290. * GIS Command button skin
  291. */
  292. TImage *pImgZoomIn_n;
  293. TImage *pImgZoomIn_c;
  294. TImage *pImgCenter_n;
  295. TImage *pImgCenter_c;
  296. TImage *pImgPrev_c;
  297. TImage *pImgPrev_n;
  298. TImage *pImgSel_n;
  299. TImage *pImgSel_c;
  300. TImage *pImgDist_n;
  301. TImage *pImgCircle_c;
  302. TImage *pImgCircle_n;
  303. TImage *pImgDist_c;
  304. TImage *pImgStnd_n;
  305. TImage *pImgSave_c;
  306. TImage *pImgSave_n;
  307. TImage *pImgStnd_c;
  308. TImage *pImgZoomOut_n;
  309. TImage *pImgZoomOut_c;
  310. TImage *pImgPan_c;
  311. TImage *pImgPan_n;
  312. TImage *pImgNext_n;
  313. TImage *pImgNext_c;
  314. TImage *pImgBoundary_c;
  315. TImage *pImgBoundary_n;
  316. TImage *pImgSquare_n;
  317. TImage *pImgSquare_c;
  318. TImage *pImgFull_c;
  319. TImage *pImgFull_n;
  320. TImage *pImgRefresh_n;
  321. TImage *pImgRefresh_c;
  322. TImage *pImgPrint_c;
  323. TImage *pImgPrint_n;
  324. int nSkin = 1;
  325. switch (nSkin)
  326. {
  327. case 10:
  328. pImgZoomIn_n = ImgZoomIn_c;
  329. pImgZoomIn_c = ImgZoomIn_n;
  330. pImgZoomOut_n = ImgZoomOut_c;
  331. pImgZoomOut_c = ImgZoomOut_n;
  332. pImgCenter_n = ImgCenter_c;
  333. pImgCenter_c = ImgCenter_n;
  334. pImgPan_c = ImgPan_n;
  335. pImgPan_n = ImgPan_c;
  336. pImgPrev_c = ImgPrev_n;
  337. pImgPrev_n = ImgPrev_c;
  338. pImgNext_n = ImgNext_c;
  339. pImgNext_c = ImgNext_n;
  340. pImgBoundary_c = ImgBoundary_n;
  341. pImgBoundary_n = ImgBoundary_c;
  342. pImgSel_n = ImgSel_c;
  343. pImgSel_c = ImgSel_n;
  344. pImgDist_n = ImgDist_c;
  345. pImgDist_c = ImgDist_n;
  346. pImgSquare_n = ImgSquare_c;
  347. pImgSquare_c = ImgSquare_n;
  348. pImgCircle_c = ImgCircle_n;
  349. pImgCircle_n = ImgCircle_c;
  350. pImgFull_c = ImgFull_n;
  351. pImgFull_n = ImgFull_c;
  352. pImgStnd_n = ImgStnd_c;
  353. pImgStnd_c = ImgStnd_n;
  354. pImgRefresh_n = ImgRefresh_c;
  355. pImgRefresh_c = ImgRefresh_n;
  356. pImgPrint_c = ImgPrint_n;
  357. pImgPrint_n = ImgPrint_c;
  358. pImgSave_c = ImgSave_n;
  359. pImgSave_n = ImgSave_c;
  360. break;
  361. case 1: case 2: case 3: case 0:
  362. case 4: case 5: default:
  363. pImgZoomIn_n = ImgZoomIn_n;
  364. pImgZoomIn_c = ImgZoomIn_c;
  365. pImgZoomOut_n = ImgZoomOut_n;
  366. pImgZoomOut_c = ImgZoomOut_c;
  367. pImgCenter_n = ImgCenter_n;
  368. pImgCenter_c = ImgCenter_c;
  369. pImgPan_c = ImgPan_c;
  370. pImgPan_n = ImgPan_n;
  371. pImgPrev_c = ImgPrev_c;
  372. pImgPrev_n = ImgPrev_n;
  373. pImgNext_n = ImgNext_n;
  374. pImgNext_c = ImgNext_c;
  375. pImgBoundary_c = ImgBoundary_c;
  376. pImgBoundary_n = ImgBoundary_n;
  377. pImgSel_n = ImgSel_n;
  378. pImgSel_c = ImgSel_c;
  379. pImgDist_n = ImgDist_n;
  380. pImgDist_c = ImgDist_c;
  381. pImgSquare_n = ImgSquare_n;
  382. pImgSquare_c = ImgSquare_c;
  383. pImgCircle_c = ImgCircle_c;
  384. pImgCircle_n = ImgCircle_n;
  385. pImgFull_c = ImgFull_c;
  386. pImgFull_n = ImgFull_n;
  387. pImgStnd_n = ImgStnd_n;
  388. pImgStnd_c = ImgStnd_c;
  389. pImgRefresh_n = ImgRefresh_n;
  390. pImgRefresh_c = ImgRefresh_c;
  391. pImgPrint_c = ImgPrint_c;
  392. pImgPrint_n = ImgPrint_n;
  393. pImgSave_c = ImgSave_c;
  394. pImgSave_n = ImgSave_n;
  395. break;
  396. }
  397. try
  398. {
  399. ImgZoomIn->NormalPicture->Assign(pImgZoomIn_n->Picture);
  400. ImgZoomIn->Picture->Assign(pImgZoomIn_n->Picture);
  401. ImgZoomIn->TogglePicture->Assign(pImgZoomIn_c->Picture);
  402. ImgZoomIn->ClickedPicture->Assign(pImgZoomIn_n->Picture);
  403. ImgZoomOut->NormalPicture->Assign(pImgZoomOut_n->Picture);
  404. ImgZoomOut->Picture->Assign(pImgZoomOut_n->Picture);
  405. ImgZoomOut->TogglePicture->Assign(pImgZoomOut_c->Picture);
  406. ImgZoomOut->ClickedPicture->Assign(pImgZoomOut_n->Picture);
  407. ImgCenter->NormalPicture->Assign(pImgCenter_n->Picture);
  408. ImgCenter->Picture->Assign(pImgCenter_n->Picture);
  409. ImgCenter->TogglePicture->Assign(pImgCenter_c->Picture);
  410. ImgCenter->ClickedPicture->Assign(pImgCenter_n->Picture);
  411. #if 0
  412. ImgPan->NormalPicture->Assign(pImgPan_n->Picture);
  413. ImgPan->Picture->Assign(pImgPan_n->Picture);
  414. ImgPan->TogglePicture->Assign(pImgPan_c->Picture);
  415. ImgPan->ClickedPicture->Assign(pImgPan_n->Picture);
  416. #else
  417. ImgPan->NormalPicture->Assign(pImgPan_c->Picture);
  418. ImgPan->Picture->Assign(pImgPan_c->Picture);
  419. ImgPan->TogglePicture->Assign(pImgPan_n->Picture);
  420. ImgPan->ClickedPicture->Assign(pImgPan_n->Picture);
  421. #endif
  422. ImgPrev->NormalPicture->Assign(pImgPrev_n->Picture);
  423. ImgPrev->Picture->Assign(pImgPrev_n->Picture);
  424. ImgPrev->TogglePicture->Assign(pImgPrev_c->Picture);
  425. ImgPrev->ClickedPicture->Assign(pImgPrev_n->Picture);
  426. ImgNext->NormalPicture->Assign(pImgNext_n->Picture);
  427. ImgNext->Picture->Assign(pImgNext_n->Picture);
  428. ImgNext->TogglePicture->Assign(pImgNext_c->Picture);
  429. ImgNext->ClickedPicture->Assign(pImgNext_n->Picture);
  430. ImgPrev->Cursor = crHandPoint;
  431. ImgNext->Cursor = crHandPoint;
  432. ImgBoundary->NormalPicture->Assign(pImgBoundary_n->Picture);
  433. ImgBoundary->Picture->Assign(pImgBoundary_n->Picture);
  434. ImgBoundary->TogglePicture->Assign(pImgBoundary_c->Picture);
  435. ImgBoundary->ClickedPicture->Assign(pImgBoundary_n->Picture);
  436. ImgSel->NormalPicture->Assign(pImgSel_n->Picture);
  437. ImgSel->Picture->Assign(pImgSel_n->Picture);
  438. ImgSel->TogglePicture->Assign(pImgSel_c->Picture);
  439. ImgSel->ClickedPicture->Assign(ImgSel_c->Picture);
  440. ImgDist->NormalPicture->Assign(pImgDist_n->Picture);
  441. ImgDist->Picture->Assign(pImgDist_n->Picture);
  442. ImgDist->TogglePicture->Assign(pImgDist_c->Picture);
  443. ImgDist->ClickedPicture->Assign(pImgDist_n->Picture);
  444. ImgSquare->NormalPicture->Assign(pImgSquare_n->Picture);
  445. ImgSquare->Picture->Assign(pImgSquare_n->Picture);
  446. ImgSquare->TogglePicture->Assign(pImgSquare_c->Picture);
  447. ImgSquare->ClickedPicture->Assign(pImgSquare_n->Picture);
  448. ImgCircle->NormalPicture->Assign(pImgCircle_n->Picture);
  449. ImgCircle->Picture->Assign(pImgCircle_n->Picture);
  450. ImgCircle->TogglePicture->Assign(pImgCircle_c->Picture);
  451. ImgCircle->ClickedPicture->Assign(pImgCircle_n->Picture);
  452. ImgFull->NormalPicture->Assign(pImgFull_n->Picture);
  453. ImgFull->Picture->Assign(pImgFull_n->Picture);
  454. ImgFull->TogglePicture->Assign(pImgFull_c->Picture);
  455. ImgFull->ClickedPicture->Assign(pImgFull_n->Picture);
  456. ImgStnd->NormalPicture->Assign(pImgStnd_n->Picture);
  457. ImgStnd->Picture->Assign(pImgStnd_n->Picture);
  458. ImgStnd->TogglePicture->Assign(pImgStnd_c->Picture);
  459. ImgStnd->ClickedPicture->Assign(pImgStnd_n->Picture);
  460. ImgRefresh->NormalPicture->Assign(pImgRefresh_n->Picture);
  461. ImgRefresh->Picture->Assign(pImgRefresh_n->Picture);
  462. ImgRefresh->TogglePicture->Assign(pImgRefresh_c->Picture);
  463. ImgRefresh->ClickedPicture->Assign(pImgRefresh_n->Picture);
  464. ImgPrint->NormalPicture->Assign(pImgPrint_n->Picture);
  465. ImgPrint->Picture->Assign(pImgPrint_n->Picture);
  466. ImgPrint->TogglePicture->Assign(pImgPrint_c->Picture);
  467. ImgPrint->ClickedPicture->Assign(pImgPrint_n->Picture);
  468. ImgSave->NormalPicture->Assign(pImgSave_n->Picture);
  469. ImgSave->Picture->Assign(pImgSave_n->Picture);
  470. ImgSave->TogglePicture->Assign(pImgSave_c->Picture);
  471. ImgSave->ClickedPicture->Assign(pImgSave_n->Picture);
  472. }
  473. catch(...)
  474. {
  475. }
  476. }
  477. //---------------------------------------------------------------------------
  478. void __fastcall TITS00MAP::TmrShowTimer(TObject *Sender)
  479. {
  480. TmrShow->Enabled = false;
  481. Application->ProcessMessages();
  482. LoadGisMap();
  483. Application->ProcessMessages();
  484. //UpdateFacilityStatus();
  485. Application->ProcessMessages();
  486. //UpdateIncidentStatus();
  487. }
  488. //---------------------------------------------------------------------------
  489. /*
  490. * 지도데이터 로드 및 프로그램 초기화 작업 수행
  491. * arguments
  492. *
  493. * return
  494. *
  495. */
  496. void __fastcall TITS00MAP::LoadGisMap()
  497. {
  498. try
  499. {
  500. try
  501. {
  502. // 지도로딩 상태바 표출
  503. PnlProgress->Left = (this->Width - PnlProgress->Width) / 2;
  504. PnlProgress->Top = (this->Height - PnlProgress->Height) / 2;
  505. PnlProgress->Top -= 50;
  506. PnlProgress->Visible = true;
  507. PbLoadMap->Properties->Text = "지도 표출색상 정보 로딩 중...";
  508. Application->ProcessMessages();
  509. PbLoadMap->Position = 50;
  510. TUTISLinkGrade UtisLinkColor;
  511. GetGisTrafficColor(UtisLinkColor);
  512. PbLoadMap->Position = 100;
  513. PbLoadMap->Properties->Text = "지도 로딩 중...";
  514. Application->ProcessMessages();
  515. // start server
  516. LoadMap();
  517. pmuControlGisClick((TObject*)pmuMove); // 전자지도 마우스이벤트를 이동으로 설정
  518. }
  519. catch (...)
  520. {
  521. }
  522. }
  523. __finally
  524. {
  525. //PnlProgress->Visible = false;
  526. }
  527. }
  528. //---------------------------------------------------------------------------
  529. void __fastcall TITS00MAP::GetGisTrafficColor(TUTISLinkGrade &pUtisLinkColor)
  530. {
  531. //TJobTick job("GetGisTrafficColor");
  532. // 고속도로
  533. pUtisLinkColor.road101.GDLOW.SpdCOLOR = clRed;
  534. pUtisLinkColor.road101.GDLOW.MinSpeed = 0;
  535. pUtisLinkColor.road101.GDLOW.MaxSpeed = 30;
  536. pUtisLinkColor.road101.GDMID.SpdCOLOR = clYellow;
  537. pUtisLinkColor.road101.GDMID.MinSpeed = 31;
  538. pUtisLinkColor.road101.GDMID.MaxSpeed = 70;
  539. pUtisLinkColor.road101.GDHIG.SpdCOLOR = clLime;
  540. pUtisLinkColor.road101.GDHIG.MinSpeed = 71;
  541. pUtisLinkColor.road101.GDHIG.MaxSpeed = 255;
  542. // 자동차전용도로
  543. pUtisLinkColor.road102.GDLOW.SpdCOLOR = clRed;
  544. pUtisLinkColor.road102.GDLOW.MinSpeed = 0;
  545. pUtisLinkColor.road102.GDLOW.MaxSpeed = 30;
  546. pUtisLinkColor.road102.GDMID.SpdCOLOR = clYellow;
  547. pUtisLinkColor.road102.GDMID.MinSpeed = 31;
  548. pUtisLinkColor.road102.GDMID.MaxSpeed = 50;
  549. pUtisLinkColor.road102.GDHIG.SpdCOLOR = clLime;
  550. pUtisLinkColor.road102.GDHIG.MinSpeed = 51;
  551. pUtisLinkColor.road102.GDHIG.MaxSpeed = 255;
  552. // 일반국도
  553. pUtisLinkColor.road103.GDLOW.SpdCOLOR = clRed;
  554. pUtisLinkColor.road103.GDLOW.MinSpeed = 0;
  555. pUtisLinkColor.road103.GDLOW.MaxSpeed = 10;
  556. pUtisLinkColor.road103.GDMID.SpdCOLOR = clYellow;
  557. pUtisLinkColor.road103.GDMID.MinSpeed = 11;
  558. pUtisLinkColor.road103.GDMID.MaxSpeed = 20;
  559. pUtisLinkColor.road103.GDHIG.SpdCOLOR = clLime;
  560. pUtisLinkColor.road103.GDHIG.MinSpeed = 21;
  561. pUtisLinkColor.road103.GDHIG.MaxSpeed = 255;
  562. // 특별, 광역시도
  563. pUtisLinkColor.road104.GDLOW.SpdCOLOR = clRed;
  564. pUtisLinkColor.road104.GDLOW.MinSpeed = 0;
  565. pUtisLinkColor.road104.GDLOW.MaxSpeed = 10;
  566. pUtisLinkColor.road104.GDMID.SpdCOLOR = clYellow;
  567. pUtisLinkColor.road104.GDMID.MinSpeed = 11;
  568. pUtisLinkColor.road104.GDMID.MaxSpeed = 20;
  569. pUtisLinkColor.road104.GDHIG.SpdCOLOR = clLime;
  570. pUtisLinkColor.road104.GDHIG.MinSpeed = 21;
  571. pUtisLinkColor.road104.GDHIG.MaxSpeed = 255;
  572. // 국가지원지방도
  573. pUtisLinkColor.road105.GDLOW.SpdCOLOR = clRed;
  574. pUtisLinkColor.road105.GDLOW.MinSpeed = 0;
  575. pUtisLinkColor.road105.GDLOW.MaxSpeed = 10;
  576. pUtisLinkColor.road105.GDMID.SpdCOLOR = clYellow;
  577. pUtisLinkColor.road105.GDMID.MinSpeed = 11;
  578. pUtisLinkColor.road105.GDMID.MaxSpeed = 20;
  579. pUtisLinkColor.road105.GDHIG.SpdCOLOR = clLime;
  580. pUtisLinkColor.road105.GDHIG.MinSpeed = 21;
  581. pUtisLinkColor.road105.GDHIG.MaxSpeed = 255;
  582. // 지방도
  583. pUtisLinkColor.road106.GDLOW.SpdCOLOR = clRed;
  584. pUtisLinkColor.road106.GDLOW.MinSpeed = 0;
  585. pUtisLinkColor.road106.GDLOW.MaxSpeed = 10;
  586. pUtisLinkColor.road106.GDMID.SpdCOLOR = clYellow;
  587. pUtisLinkColor.road106.GDMID.MinSpeed = 11;
  588. pUtisLinkColor.road106.GDMID.MaxSpeed = 20;
  589. pUtisLinkColor.road106.GDHIG.SpdCOLOR = clLime;
  590. pUtisLinkColor.road106.GDHIG.MinSpeed = 21;
  591. pUtisLinkColor.road106.GDHIG.MaxSpeed = 255;
  592. // 시군도
  593. pUtisLinkColor.road107.GDLOW.SpdCOLOR = clRed;
  594. pUtisLinkColor.road107.GDLOW.MinSpeed = 0;
  595. pUtisLinkColor.road107.GDLOW.MaxSpeed = 10;
  596. pUtisLinkColor.road107.GDMID.SpdCOLOR = clYellow;
  597. pUtisLinkColor.road107.GDMID.MinSpeed = 11;
  598. pUtisLinkColor.road107.GDMID.MaxSpeed = 20;
  599. pUtisLinkColor.road107.GDHIG.SpdCOLOR = clLime;
  600. pUtisLinkColor.road107.GDHIG.MinSpeed = 21;
  601. pUtisLinkColor.road107.GDHIG.MaxSpeed = 255;
  602. TDBLinkColor *pLinkColor = NULL;
  603. TLinkTrfGrd *pTrgGrd = NULL;
  604. FOR_STL(TItsTrafficGrade *, pGrade, ItsTrafficGradeManager->FLists)
  605. {
  606. FOR_STL(TItsTrafficSubGrade *, pSubGrade, pGrade->FSubLists)
  607. {
  608. if (pGrade->SECT_GRAD_CD == "SRT1") //101.고속국도
  609. pLinkColor = &pUtisLinkColor.road101;
  610. else
  611. if (pGrade->SECT_GRAD_CD == "SRT2") //102.도시고속국도
  612. pLinkColor = &pUtisLinkColor.road102;
  613. else
  614. if (pGrade->SECT_GRAD_CD == "SRT3") //103.일반국도
  615. pLinkColor = &pUtisLinkColor.road103;
  616. else
  617. if (pGrade->SECT_GRAD_CD == "SRT4") //104.특별·광역시도
  618. pLinkColor = &pUtisLinkColor.road104;
  619. else
  620. if (pGrade->SECT_GRAD_CD == "SRT5") //105.국가지원지방도
  621. pLinkColor = &pUtisLinkColor.road105;
  622. else
  623. if (pGrade->SECT_GRAD_CD == "SRT6") //106.지방도
  624. pLinkColor = &pUtisLinkColor.road106;
  625. else
  626. if (pGrade->SECT_GRAD_CD == "SRT7") //107.시·군도
  627. pLinkColor = &pUtisLinkColor.road107;
  628. else
  629. continue;
  630. TColor trfColor;
  631. if (pSubGrade->CMTR_GRAD_CD == "LTC1")
  632. {
  633. pTrgGrd = &pLinkColor->GDHIG;
  634. trfColor = clLime;
  635. }
  636. else
  637. if (pSubGrade->CMTR_GRAD_CD == "LTC2")
  638. {
  639. pTrgGrd = &pLinkColor->GDMID;
  640. trfColor = clYellow;
  641. }
  642. else
  643. if (pSubGrade->CMTR_GRAD_CD == "LTC3")
  644. {
  645. pTrgGrd = &pLinkColor->GDLOW;
  646. trfColor = clRed;
  647. }
  648. else
  649. continue;
  650. pTrgGrd->SpdCOLOR = trfColor;
  651. if (pSubGrade->CMTR_GRAD_CD == "LTC3")
  652. pTrgGrd->MinSpeed = 0;
  653. else
  654. pTrgGrd->MinSpeed = StrToInt(pSubGrade->LWST_TRVL_SPED);
  655. pTrgGrd->MaxSpeed = StrToInt(pSubGrade->HGHS_TRVL_SPED);
  656. }
  657. }
  658. }
  659. //---------------------------------------------------------------------------
  660. void __fastcall TITS00MAP::SetGisTrafficColor()
  661. {
  662. #if 0
  663. //TODO
  664. //소통등급별 색상을 플래시로 던지는 것을 여기에 추가한다.
  665. TUTISLinkGrade UtisLinkColor;
  666. GetGisTrafficColor(UtisLinkColor);
  667. // 소통정보를 표출할 스레드 생성
  668. for (int ii = 0; ii < MAX_LAYERS; ii++)
  669. {
  670. if (m_pLinkSpeedUpdate[ii] == NULL) continue;
  671. m_pLinkSpeedUpdate[ii]->SetUTISLinkColor(UtisLinkColor);
  672. }
  673. #endif
  674. }
  675. //---------------------------------------------------------------------------
  676. void __fastcall TITS00MAP::GisMenuCheckClear()
  677. {
  678. pmuZoomIn->Checked = false;
  679. pmuZoomOut->Checked = false;
  680. pmuMove->Checked = false;
  681. pmuIconSel->Checked = false;
  682. pmuCalLen->Checked = false;
  683. pmuCalArea->Checked = false;
  684. pmuRadius->Checked = false;
  685. pmuMoveCenter->Checked = false;
  686. pmuGisDefault->Checked = false;
  687. }
  688. //---------------------------------------------------------------------------
  689. void __fastcall TITS00MAP::pmuGisCalcClick(TObject *Sender)
  690. {
  691. //TODO TMenuItem *pMenu = (TMenuItem *)Sender;
  692. //TODO SetMapOperation((TXiMapOperation)pMenu->Tag);
  693. }
  694. //---------------------------------------------------------------------------
  695. void __fastcall TITS00MAP::pmuControlGisClick(TObject *Sender)
  696. {
  697. TMenuItem *pMenu = (TMenuItem*)Sender;
  698. SetMapOperation((TXiMapOperation)pMenu->Tag);
  699. }
  700. //---------------------------------------------------------------------------
  701. /*
  702. * 지도제어 설정
  703. * arguments
  704. *
  705. * return
  706. *
  707. */
  708. void __fastcall TITS00MAP::SetMapOperation(TXiMapOperation nMapOper)
  709. {
  710. //enum TXiMapOperation { Nothing, OnZoomIn, OnZoomOut, OnPanSt, OnDistance, OnSelect, OnGeoQuery, OnEditting, OnCircle, OnShortPath, OnArea, OnInsert, OnFindEvent, OnNearFind, OnUserDefine };
  711. if (!MapStart) return;
  712. GisMenuCheckClear();
  713. m_bMoveCenter = false;
  714. m_bCalcMode = false;
  715. m_bCalcCont = false;
  716. if (OnSelect == nMapOper)
  717. {
  718. GrpPos->Visible = true;
  719. }
  720. else
  721. {
  722. GrpPos->Visible = false;
  723. }
  724. switch(nMapOper)
  725. {
  726. case OnPanSt: //pan
  727. TCommFlash::CallFunc(ShockwaveFlash1, "SelectMode", "0");
  728. ShockwaveFlash1->Cursor = crDefault;//Drag;
  729. ModeSelect = false;
  730. try
  731. {
  732. ImgPan->NormalPicture->Assign(ImgPan_c->Picture);
  733. ImgPan->Picture->Assign(ImgPan_c->Picture);
  734. ImgPan->TogglePicture->Assign(ImgPan_n->Picture);
  735. ImgPan->ClickedPicture->Assign(ImgPan_n->Picture);
  736. ImgSel->NormalPicture->Assign(ImgSel_n->Picture);
  737. ImgSel->Picture->Assign(ImgSel_n->Picture);
  738. ImgSel->TogglePicture->Assign(ImgSel_c->Picture);
  739. ImgSel->ClickedPicture->Assign(ImgSel_c->Picture);
  740. } catch(Exception &e) {}
  741. break;
  742. case OnZoomIn: //zoomin
  743. TCommFlash::CallFunc(ShockwaveFlash1, "ZoomIn", "");
  744. break;
  745. case OnZoomOut: //zoomout
  746. TCommFlash::CallFunc(ShockwaveFlash1, "ZoomOut", "");
  747. break;
  748. case OnSelect: //select
  749. TCommFlash::CallFunc(ShockwaveFlash1, "SelectMode", "1");
  750. ShockwaveFlash1->Cursor = crHelp;
  751. ModeSelect = true;
  752. try
  753. {
  754. ImgPan->NormalPicture->Assign(ImgPan_n->Picture);
  755. ImgPan->Picture->Assign(ImgPan_n->Picture);
  756. ImgPan->TogglePicture->Assign(ImgPan_c->Picture);
  757. ImgPan->ClickedPicture->Assign(ImgPan_n->Picture);
  758. ImgSel->NormalPicture->Assign(ImgSel_c->Picture);
  759. ImgSel->Picture->Assign(ImgSel_c->Picture);
  760. ImgSel->TogglePicture->Assign(ImgSel_n->Picture);
  761. ImgSel->ClickedPicture->Assign(ImgSel_n->Picture);
  762. } catch(Exception &e) {}
  763. break;
  764. }
  765. }
  766. //---------------------------------------------------------------------------
  767. /*
  768. * 전자지도의 영역을 설정한다.
  769. * arguments
  770. * double : left 영역
  771. * double : top 영역
  772. * double : right 영역
  773. * double : bottom 영역
  774. * return
  775. * void
  776. */
  777. void __fastcall TITS00MAP::SetExtent(TDDRect &curRc)
  778. {
  779. //TODO if (xclntMap->Active)
  780. //TODO {
  781. //TODO xclntMap->ExtentDraw(curRc);
  782. //TODO }
  783. }
  784. //---------------------------------------------------------------------------
  785. /*
  786. * 지도 영역 이동 함수. 현재 영역을 영역이동 큐에 추가한다.
  787. * 다음 버튼을 비활성 시킨다.
  788. * arguments
  789. * return
  790. * void
  791. */
  792. bool __fastcall TITS00MAP::AddExtentQ(TDDRect &curRc)
  793. {
  794. TDDRect *pExt = &m_ExtQ.extent[m_ExtQ.userIdx];
  795. memcpy((char*)pExt, (char*)&curRc, sizeof(curRc));
  796. if (m_PrevExt.MinX == pExt->MinX &&
  797. m_PrevExt.MinY == pExt->MinY &&
  798. m_PrevExt.MaxX == pExt->MaxX &&
  799. m_PrevExt.MaxY == pExt->MaxY)
  800. {
  801. return false;
  802. }
  803. memcpy((char*)&m_PrevExt, pExt, sizeof(m_PrevExt));
  804. if (m_ExtQ.userIdx >= D_EXT_QUEUE_SIZE)
  805. {
  806. m_ExtQ.userIdx = D_EXT_QUEUE_SIZE;
  807. memcpy((char *)&m_ExtQ.extent[0], (char *)&m_ExtQ.extent[1], sizeof(TDDRect)*D_EXT_QUEUE_SIZE);
  808. }
  809. else
  810. {
  811. m_ExtQ.userIdx++;
  812. }
  813. m_ExtQ.currIdx = m_ExtQ.userIdx-1;
  814. return true;
  815. }
  816. //---------------------------------------------------------------------------
  817. /*
  818. * 지도 영역 이동 함수. 이전 영역으로 이동
  819. * 이동 범위에 따라 이전/다음 버튼을 활성/비활성 시킨다.
  820. * arguments
  821. * return
  822. * void
  823. */
  824. bool __fastcall TITS00MAP::PrevExtentQ()
  825. {
  826. m_ExtQ.bExtent = false;
  827. if (m_ExtQ.currIdx <= 0)
  828. {
  829. m_ExtQ.currIdx = 0;
  830. return false;
  831. }
  832. m_ExtQ.currIdx--;
  833. TDDRect *pExt = &m_ExtQ.extent[m_ExtQ.currIdx];
  834. SetExtent(*pExt);
  835. return true;
  836. }
  837. //---------------------------------------------------------------------------
  838. /*
  839. * 지도 영역 이동 함수. 다음 영역으로 이동
  840. * 이동 범위에 따라 이전/다음 버튼을 활성/비활성 시킨다.
  841. * arguments
  842. * return
  843. * void
  844. */
  845. bool __fastcall TITS00MAP::NextExtentQ()
  846. {
  847. m_ExtQ.bExtent = false;
  848. if (m_ExtQ.currIdx >= m_ExtQ.userIdx-1)
  849. {
  850. m_ExtQ.currIdx = m_ExtQ.userIdx-1;
  851. return false;
  852. }
  853. m_ExtQ.currIdx++;
  854. TDDRect *pExt = &m_ExtQ.extent[m_ExtQ.currIdx];
  855. SetExtent(*pExt);
  856. return true;
  857. }
  858. //---------------------------------------------------------------------------
  859. void __fastcall TITS00MAP::ImgPrevClick(TObject *Sender)
  860. {
  861. PrevExtentQ();
  862. }
  863. //---------------------------------------------------------------------------
  864. void __fastcall TITS00MAP::ImgNextClick(TObject *Sender)
  865. {
  866. NextExtentQ();
  867. }
  868. //---------------------------------------------------------------------------
  869. void __fastcall TITS00MAP::ImgFullClick(TObject *Sender)
  870. {
  871. //TODO if (xclntMap->Active)
  872. //TODO {
  873. //TODO xclntMap->ExtentDraw(xclntMap->GetFullExtent());
  874. //TODO }
  875. }
  876. //---------------------------------------------------------------------------
  877. void __fastcall TITS00MAP::ImgStndClick(TObject *Sender)
  878. {
  879. if (MapStart)
  880. {
  881. TCommFlash::CallFunc(ShockwaveFlash1, "StdExtent", "");
  882. }
  883. }
  884. //---------------------------------------------------------------------------
  885. void __fastcall TITS00MAP::ImgRefreshClick(TObject *Sender)
  886. {
  887. if (MapStart)
  888. {
  889. // 시설물상태정보
  890. FrmMain->FPollStatus01.Reset();
  891. // 프로세스상태정보
  892. FrmMain->FPollStatus02.Reset();
  893. ItsTrafficManager->Init();
  894. FrmMain->FPollTraffic00.Reset(); // 링크소통정보(전체)
  895. FrmMain->FPollTraffic01.Reset(); // 링크소통정보
  896. FrmMain->FPollTraffic02.Reset(); // 서비스링크소통정보
  897. FrmMain->FPollTraffic03.Reset(); // 도로소통정보
  898. FrmMain->FPollTraffic04.Reset(); // 반복정체구간
  899. ImgRefresh->Enabled = false;
  900. TmrRefresh->Enabled = true;
  901. }
  902. }
  903. //---------------------------------------------------------------------------
  904. void __fastcall TITS00MAP::TmrRefreshTimer(TObject *Sender)
  905. {
  906. TmrRefresh->Enabled = false;
  907. ImgRefresh->Enabled = true;
  908. }
  909. //---------------------------------------------------------------------------
  910. void __fastcall TITS00MAP::ChkTrafficLayerClick(TObject *Sender)
  911. {
  912. if (!MapStart) return;
  913. String sTraffic = ChkTrafficLayer->Checked ? "1" : "0";
  914. String sTooltip = ChkToolTip->Checked ? "1" : "0";
  915. TCommFlash::CallFunc(ShockwaveFlash1, "ShowTraffic", sTraffic + "|" + sTooltip);
  916. ShockwaveFlash1->SetFocus();
  917. }
  918. //---------------------------------------------------------------------------
  919. void __fastcall TITS00MAP::TmrSelectTimer(TObject *Sender)
  920. {
  921. TmrSelect->Enabled = false;
  922. ImgSelect->Visible = false;
  923. }
  924. //---------------------------------------------------------------------------
  925. void __fastcall TITS00MAP::SelectObjectByPos(double dPosX, double dPosY, bool bArrow/*=false*/)
  926. {
  927. m_ptSelect.X = dPosX;
  928. m_ptSelect.Y = dPosY;
  929. if (!MapStart) return;
  930. TCommFlash::CallFunc(ShockwaveFlash1, "SelectPoint", String(dPosX) + "," + String(dPosY) + "|3");
  931. ShockwaveFlash1->SetFocus();
  932. }
  933. //---------------------------------------------------------------------------
  934. bool __fastcall TITS00MAP::SelectLinkById(int ALinkLevel, String sId, bool bHide/*=false*/)
  935. {
  936. try
  937. {
  938. if (!MapStart) return false;
  939. if (m_nMapLevel != ALinkLevel)
  940. {
  941. int nZoomLevel = 1;
  942. if (ALinkLevel == 2)
  943. {
  944. nZoomLevel = 2;
  945. }
  946. else
  947. if (ALinkLevel == 3)
  948. {
  949. nZoomLevel = 5;
  950. }
  951. TCommFlash::CallFunc(ShockwaveFlash1, "SetZoom", String(nZoomLevel));
  952. Application->ProcessMessages();
  953. //Sleep(1000);
  954. Application->ProcessMessages();
  955. }
  956. #if 0
  957. var zoom = _mainMap.map.getZoom();
  958. switch(zoom)
  959. {
  960. case 1: levl = 1; break; //LINK
  961. case 2: levl = 2; break; //IFSC
  962. case 3: levl = 3; break; //IFSC
  963. case 4: levl = 4; break; //IFSC
  964. case 5: levl = 5; break; //ROAD
  965. default: levl = 6; break; //ROAD
  966. }
  967. #endif
  968. TCommFlash::CallFunc(ShockwaveFlash1, "FindLink", sId);
  969. }
  970. catch(...)
  971. {
  972. }
  973. return true;
  974. }
  975. //---------------------------------------------------------------------------
  976. void __fastcall TITS00MAP::TmrLinkSelectTimer(TObject *Sender)
  977. {
  978. TmrLinkSelect->Enabled = false;
  979. //TODO xclntMap->ClearUserDrawPolyGon();
  980. //TODO xclntMap->ClearPathInfo();
  981. //TODO xclntMap->ReDraw();
  982. }
  983. //---------------------------------------------------------------------------
  984. void __fastcall TITS00MAP::MnuSetStdAreaClick(TObject *Sender)
  985. {
  986. #if 0
  987. //TODO
  988. if (!MapStart) return;
  989. Application->ProcessMessages();
  990. if (Application->MessageBox(L"현재 영역을 표준영역으로 지정하시겠습니까?", L"확인",
  991. MB_YESNO|MB_ICONQUESTION) != IDYES)
  992. {
  993. return;
  994. }
  995. TIniFile *pIniFile = NULL;
  996. String sIniFile = ChangeFileExt(ExtractFileName(Application->ExeName), ".ini");
  997. String sCfgFile = ExtractFilePath(Application->ExeName) + "\\cfg\\" + sIniFile;
  998. try
  999. {
  1000. try
  1001. {
  1002. pIniFile = new TIniFile(sCfgFile);
  1003. TDDRect rc = xclntMap->GetViewExtent();
  1004. pIniFile->WriteString("MAP", "LEFTTOPX", String(rc.MaxX));
  1005. pIniFile->WriteString("MAP", "LEFTTOPY", String(rc.MaxY));
  1006. pIniFile->WriteString("MAP", "RIGHTBOTTOMX", String(rc.MinX));
  1007. pIniFile->WriteString("MAP", "RIGHTBOTTOMY", String(rc.MinY));
  1008. g_GisInfo.dLeftTopX = rc.MaxX;
  1009. g_GisInfo.dLeftTopY = rc.MaxY;
  1010. g_GisInfo.dRightBottomX = rc.MinX;
  1011. g_GisInfo.dRightBottomY = rc.MinY;
  1012. }
  1013. __finally
  1014. {
  1015. if (pIniFile) delete pIniFile;
  1016. pIniFile = NULL;
  1017. }
  1018. }
  1019. catch(...)
  1020. {
  1021. }
  1022. #endif
  1023. }
  1024. //---------------------------------------------------------------------------
  1025. void __fastcall TITS00MAP::MnuMoveStdAreaClick(TObject *Sender)
  1026. {
  1027. ImgStndClick((TObject*)ImgStnd);
  1028. }
  1029. //---------------------------------------------------------------------------
  1030. void __fastcall TITS00MAP::RefreshMapTraffic()
  1031. {
  1032. try {
  1033. TmrRefresh->Enabled = false;
  1034. ImgRefresh->Enabled = true;
  1035. } catch(...) {}
  1036. if (!MapStart) return;
  1037. //LblTraffic->Visible = true;
  1038. //TmrLblTraffic->Enabled = true;
  1039. String sObjList = "";
  1040. try
  1041. {
  1042. try
  1043. {
  1044. ItsTrafficManager->FLists.Lock();
  1045. FOR_STL(TItsTraffic*, pTraffic, ItsTrafficManager->FLists)
  1046. {
  1047. if (pTraffic->TRF_GRADE == "0") continue;
  1048. sObjList += String(pTraffic->LEVL) + "," +
  1049. pTraffic->LINKID + "," +
  1050. pTraffic->TRF_GRADE + "," +
  1051. String(pTraffic->SPEED) + "," +
  1052. String(pTraffic->TRVTM) + "|";
  1053. }
  1054. }
  1055. catch(Exception &exception)
  1056. {
  1057. throw Exception(String(exception.ClassName()) + exception.Message);
  1058. }
  1059. }
  1060. __finally
  1061. {
  1062. ItsTrafficManager->FLists.UnLock();
  1063. if (sObjList != "")
  1064. {
  1065. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1066. TCommFlash::CallFunc(ShockwaveFlash1, "UpdateTraffic", sObjList);
  1067. }
  1068. }
  1069. TCommFlash::CallFunc(ShockwaveFlash1, "RefreshMap", "");
  1070. try
  1071. {
  1072. if (FrmLinkInfo)
  1073. {
  1074. FrmLinkInfo->RefreshLinkInfo();
  1075. }
  1076. }
  1077. catch(...)
  1078. {
  1079. }
  1080. }
  1081. //---------------------------------------------------------------------------
  1082. void __fastcall TITS00MAP::ChkDrawGisClick(TObject *Sender)
  1083. {
  1084. ShowHideFacility();
  1085. ShockwaveFlash1->SetFocus();
  1086. }
  1087. //---------------------------------------------------------------------------
  1088. void __fastcall TITS00MAP::ShowLinkDetailInfo(String sLinkId, int nLinkLevel)
  1089. {
  1090. try
  1091. {
  1092. if (FrmLinkInfo == NULL)
  1093. {
  1094. FrmLinkInfo = new TFrmLinkInfo(Application);
  1095. }
  1096. FrmLinkInfo->Show();
  1097. FrmLinkInfo->ShowLinkInfo(sLinkId, nLinkLevel);
  1098. }
  1099. catch(...)
  1100. {
  1101. }
  1102. }
  1103. //---------------------------------------------------------------------------
  1104. void __fastcall TITS00MAP::ChkGisSearchClick(TObject *Sender)
  1105. {
  1106. try
  1107. {
  1108. if (ChkGisSearch->Checked)
  1109. {
  1110. if (FrmGisSearch == NULL)
  1111. {
  1112. FrmGisSearch = new TFrmGisSearch(this);
  1113. //FrmGisSearch->Parent = this;
  1114. }
  1115. FrmGisSearch->Show();
  1116. }
  1117. else
  1118. {
  1119. if (FrmGisSearch)
  1120. {
  1121. if (FrmGisSearch->m_bClose == false)
  1122. {
  1123. FrmGisSearch->Close();
  1124. }
  1125. }
  1126. }
  1127. }
  1128. catch(...)
  1129. {
  1130. }
  1131. }
  1132. //---------------------------------------------------------------------------
  1133. void __fastcall TITS00MAP::FormClose(TObject *Sender, TCloseAction &Action)
  1134. {
  1135. CommClose();
  1136. //ITS00MAP = NULL;
  1137. Action = caFree;
  1138. }
  1139. //---------------------------------------------------------------------------
  1140. void __fastcall TITS00MAP::panRemarkMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
  1141. {
  1142. TcxGroupBox *pGroup = (TcxGroupBox*)Sender;
  1143. ReleaseCapture();
  1144. pGroup->Perform(WM_SYSCOMMAND, 0xf012, 0);
  1145. }
  1146. //---------------------------------------------------------------------------
  1147. void __fastcall TITS00MAP::ChkViewExamplePropertiesChange(TObject *Sender)
  1148. {
  1149. panRemark->Visible = ChkViewExample->Checked;
  1150. }
  1151. //---------------------------------------------------------------------------
  1152. /*
  1153. * 시설물의 상태에 따라 이미지를 전자지도에 표출한다.(XiClient->CCTVIconList)
  1154. * arguments
  1155. *
  1156. * return
  1157. * void
  1158. */
  1159. void __fastcall TITS00MAP::UpdateFacilityStatus()
  1160. {
  1161. String sFacility;
  1162. String sShowIcon;
  1163. String sShowInfo;
  1164. String sObjList;
  1165. String sStatus;
  1166. TItsFacility *pFacility;
  1167. sStatus = "0";
  1168. try
  1169. {
  1170. ItsFacilityManager->FCctvLists.Lock();
  1171. FOR_STL(TItsCctv *, pObj, ItsFacilityManager->FCctvLists)
  1172. {
  1173. if (pObj->DEL_YN == "Y") continue;
  1174. //if (pObj->LOCAL_YN != "Y") continue; //지역CCTV정보만 위치에 표출
  1175. pFacility = ItsFacilityManager->FLists.Find(pObj->CCTV_CTLR_ID);
  1176. if (!pFacility) continue;
  1177. sStatus = pFacility->FComm;
  1178. String sLoc = TCommFlash::ReplaceName(pObj->ISTL_LCTN_NM);
  1179. sObjList += (pObj->CCTV_CTLR_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->CCTV_CTLR_ID + ",0,|");
  1180. }
  1181. }
  1182. __finally
  1183. {
  1184. ItsFacilityManager->FCctvLists.UnLock();
  1185. sFacility = FAC_CCTV;
  1186. sShowIcon = ChkDrawCtv->Checked ? "1" : "0";
  1187. sShowInfo = "0";
  1188. TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1189. if (sObjList != "")
  1190. {
  1191. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1192. TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1193. }
  1194. }
  1195. sObjList = "";
  1196. try
  1197. {
  1198. ItsFacilityManager->FVmsLists.Lock();
  1199. FOR_STL(TItsVms *, pObj, ItsFacilityManager->FVmsLists)
  1200. {
  1201. if (pObj->DEL_YN == "Y") continue;
  1202. pFacility = ItsFacilityManager->FLists.Find(pObj->VMS_CTLR_ID);
  1203. if (!pFacility) continue;
  1204. sStatus = pFacility->FComm;
  1205. String sSubType = pObj->VMS_USAG_TYPE_CD == "VUTN" ? "T" : "P";
  1206. String sLoc = TCommFlash::ReplaceName(pObj->VMS_NM);
  1207. sObjList += (pObj->VMS_CTLR_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->VMS_CTLR_ID + "," + sSubType + "|");
  1208. }
  1209. }
  1210. __finally
  1211. {
  1212. ItsFacilityManager->FVmsLists.UnLock();
  1213. sFacility = FAC_VMS;
  1214. sShowIcon = ChkDrawVms->Checked ? "1" : "0";
  1215. sShowInfo = "0";
  1216. TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1217. if (sObjList != "")
  1218. {
  1219. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1220. TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1221. }
  1222. }
  1223. sObjList = "";
  1224. try
  1225. {
  1226. ItsFacilityManager->FRseLists.Lock();
  1227. FOR_STL(TItsRse *, pObj, ItsFacilityManager->FRseLists)
  1228. {
  1229. //if (pObj->DEL_YN == "Y") continue;
  1230. pFacility = ItsFacilityManager->FLists.Find(pObj->RSEID);
  1231. if (!pFacility) continue;
  1232. sStatus = pFacility->FComm;
  1233. if (sStatus == "2") sStatus = "1";
  1234. String sLoc = TCommFlash::ReplaceName(pObj->LOCATION);
  1235. sObjList += (pObj->RSEID + "," + sStatus + "," + sLoc + "," + pObj->COORDX + "," + pObj->COORDY + "," + pObj->RSEID + ",0,|");
  1236. }
  1237. }
  1238. __finally
  1239. {
  1240. ItsFacilityManager->FRseLists.UnLock();
  1241. sFacility = FAC_RSE;
  1242. sShowIcon = ChkDrawRse->Checked ? "1" : "0";
  1243. sShowInfo = "0";
  1244. TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1245. if (sObjList != "")
  1246. {
  1247. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1248. TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1249. }
  1250. }
  1251. #if 0
  1252. sObjList = "";
  1253. try
  1254. {
  1255. ItsFacilityManager->FWebCamLists.Lock();
  1256. FOR_STL(TItsWebCam *, pObj, ItsFacilityManager->FWebCamLists)
  1257. {
  1258. //if (pObj->DEL_YN == "Y") continue;
  1259. pFacility = ItsFacilityManager->FLists.Find(pObj->WEB_CMRA_ID);
  1260. if (!pFacility) continue;
  1261. sStatus = pFacility->FComm;
  1262. if (sStatus == "2") sStatus = "1";
  1263. String sLoc = TCommFlash::ReplaceName(pObj->ISTL_LCTN_NM);
  1264. sObjList += (pObj->WEB_CMRA_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->WEB_CMRA_ID + ",0,|");
  1265. }
  1266. }
  1267. __finally
  1268. {
  1269. ItsFacilityManager->FWebCamLists.UnLock();
  1270. sFacility = FAC_WCAM;
  1271. sShowIcon = ChkWebCam->Checked ? "1" : "0";
  1272. sShowInfo = "0";
  1273. TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1274. if (sObjList != "")
  1275. {
  1276. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1277. TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1278. }
  1279. }
  1280. #endif
  1281. sObjList = "";
  1282. try
  1283. {
  1284. ItsFacilityManager->FVdsLists.Lock();
  1285. FOR_STL(TItsVds *, pObj, ItsFacilityManager->FVdsLists)
  1286. {
  1287. if (pObj->DEL_YN == "Y") continue;
  1288. pFacility = ItsFacilityManager->FLists.Find(pObj->VDS_CTLR_ID);//CTLR_MNGM_NMBR);
  1289. if (!pFacility) continue;
  1290. sStatus = pFacility->FComm;
  1291. String sLoc = TCommFlash::ReplaceName(pObj->LCTN);
  1292. sObjList += (pObj->VDS_CTLR_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->VDS_CTLR_ID + ",0,|");
  1293. }
  1294. }
  1295. __finally
  1296. {
  1297. ItsFacilityManager->FVdsLists.UnLock();
  1298. sFacility = FAC_VDS;
  1299. sShowIcon = ChkDrawVds->Checked ? "1" : "0";
  1300. sShowInfo = "0";
  1301. TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1302. if (sObjList != "")
  1303. {
  1304. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1305. TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1306. }
  1307. }
  1308. sObjList = "";
  1309. try
  1310. {
  1311. ItsFacilityManager->FAviLists.Lock();
  1312. FOR_STL(TItsAvi *, pObj, ItsFacilityManager->FAviLists)
  1313. {
  1314. if (pObj->DEL_YN == "Y") continue;
  1315. pFacility = ItsFacilityManager->FLists.Find(pObj->AVI_ID);
  1316. if (!pFacility) continue;
  1317. sStatus = pFacility->FComm;
  1318. String sLoc = TCommFlash::ReplaceName(pObj->AVI_LCTN_NM);
  1319. sObjList += (pObj->AVI_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->AVI_ID + ",0,|");
  1320. }
  1321. }
  1322. __finally
  1323. {
  1324. ItsFacilityManager->FAviLists.UnLock();
  1325. sFacility = FAC_AVI;
  1326. sShowIcon = ChkDrawAvi->Checked ? "1" : "0";
  1327. sShowInfo = "0";
  1328. TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1329. if (sObjList != "")
  1330. {
  1331. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1332. TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1333. }
  1334. }
  1335. #if 0
  1336. sObjList = "";
  1337. try
  1338. {
  1339. ItsFacilityManager->FDsrcLists.Lock();
  1340. FOR_STL(TItsDsrc *, pObj, ItsFacilityManager->FDsrcLists)
  1341. {
  1342. if (pObj->DEL_YN == "Y") continue;
  1343. pFacility = ItsFacilityManager->FLists.Find(pObj->RSE_ID);
  1344. if (!pFacility) continue;
  1345. sStatus = pFacility->FComm;
  1346. String sLoc = TCommFlash::ReplaceName(pObj->ISTL_LCTN_NM);
  1347. sObjList += (pObj->RSE_ID + "," + sStatus + "," + sLoc + "," + pObj->LCTN_X + "," + pObj->LCTN_Y + "," + pObj->RSE_ID + ",0,|");
  1348. }
  1349. }
  1350. __finally
  1351. {
  1352. ItsFacilityManager->FDsrcLists.UnLock();
  1353. sFacility = FAC_DSRC;
  1354. sShowIcon = ChkDrawDsrc->Checked ? "1" : "0";
  1355. sShowInfo = "0";
  1356. TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1357. if (sObjList != "")
  1358. {
  1359. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1360. TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1361. }
  1362. }
  1363. #endif
  1364. sObjList = "";
  1365. try
  1366. {
  1367. ItsParkingManager->FLists.Lock();
  1368. FOR_STL(TItsParking *, pObj, ItsParkingManager->FLists)
  1369. {
  1370. if (pObj->DEL_YN == "Y") continue;
  1371. sStatus = "0";
  1372. String sLoc = TCommFlash::ReplaceName(pObj->PARKINGNAME);
  1373. sObjList += (pObj->PARKINGID + "," + sStatus + "," + sLoc + "," + pObj->COORDX + "," + pObj->COORDY + "," + pObj->PARKINGCNT + ",0,|");
  1374. }
  1375. }
  1376. __finally
  1377. {
  1378. ItsParkingManager->FLists.UnLock();
  1379. sFacility = FAC_PARK;
  1380. sShowIcon = ChkDrawPark->Checked ? "1" : "0";
  1381. sShowInfo = "0";
  1382. TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1383. if (sObjList != "")
  1384. {
  1385. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1386. TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1387. }
  1388. }
  1389. //시설물 재설정 후 시설물 정보만 다시 그리도록 한다.
  1390. //TCommFlash::CallFunc(ShockwaveFlash1, "RefreshMap", "");
  1391. }
  1392. //---------------------------------------------------------------------------
  1393. /*
  1394. * 돌발 상태에 따라 이미지를 전자지도에 표출한다.(XiClient->ADDAccEvent)
  1395. * arguments
  1396. *
  1397. * return
  1398. * void
  1399. */
  1400. void __fastcall TITS00MAP::UpdateIncidentStatus()
  1401. {
  1402. static String sStatusMsg[6] = { "", "사고", "공사", "행사", "기상", "기타", };
  1403. if (!MapStart) return;
  1404. String sFacility;
  1405. String sShowIcon;
  1406. String sShowInfo;
  1407. String sObjList;
  1408. int nStatus = 0;
  1409. sObjList = "";
  1410. try
  1411. {
  1412. ItsIncidentManager->FLists.Lock();
  1413. FOR_STL(TItsIncident *, pObj, ItsIncidentManager->FLists)
  1414. {
  1415. if (pObj->DISP_INCD == "N") continue;
  1416. if (pObj->INCD_PRGR_STEP_CD == "ISS2")
  1417. {
  1418. nStatus = pObj->INCD_TYPE_CLSF_CD.ToIntDef(1);
  1419. if (nStatus > 4 || nStatus < 1) nStatus = 1;
  1420. //돌발유형이 사고,기상인 경우는 돌발종료시각을 표출하지 않도록 함. 돌발유형이 공사,행사인 경우만 돌발종료시각 표출함
  1421. //String sTitle = "▶▶돌발 정보◀◀|돌발 ID : " + pObj->INCD_OCRR_ID + "|제목 : " + pObj->INCD_TITL + "|유형 : " + sStatusMsg[nStatus];
  1422. //sTitle += "|돌발등록시각: " + ITSUtil_StrToTime(pObj->RGST_DT) + "|돌발시작시각: " + ITSUtil_StrToTime(pObj->FINCD_STRT_DT);
  1423. String sTitle = TCommFlash::ReplaceName(pObj->INCD_TITL);
  1424. String sInfo = pObj->INCD_OCRR_ID + "$" + sTitle + "$" + sStatusMsg[nStatus];
  1425. sInfo += "$" + ITSUtil_StrToTime(pObj->RGST_DT) + "$" + ITSUtil_StrToTime(pObj->FINCD_STRT_DT);
  1426. if (nStatus == 1 || nStatus == 2)
  1427. {
  1428. sInfo += "$" + ITSUtil_StrToTime(pObj->INCD_END_PRAR_DT); //돌발종료시각
  1429. }
  1430. else sInfo+= "$-";
  1431. sObjList += (pObj->INCD_OCRR_ID + "," + String(nStatus) + "," + sTitle + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + sInfo + "|");
  1432. }
  1433. }
  1434. }
  1435. __finally
  1436. {
  1437. ItsIncidentManager->FLists.UnLock();
  1438. sFacility = FAC_INCD;
  1439. sShowIcon = ChkDrawIncident->Checked ? "1" : "0";
  1440. sShowInfo = "0";
  1441. TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1442. if (sObjList != "")
  1443. {
  1444. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1445. TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1446. }
  1447. }
  1448. //TCommFlash::CallFunc(ShockwaveFlash1, "RefreshMap", "");
  1449. }
  1450. //---------------------------------------------------------------------------
  1451. void __fastcall TITS00MAP::pmuFacilityPopup(TObject *Sender)
  1452. {
  1453. String sLoc = " ";
  1454. TPopupMenu *pMenu = (TPopupMenu*)Sender;
  1455. if (pMenu->Tag == 0)
  1456. {
  1457. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(FSelId);
  1458. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->ISTL_LCTN_NM);
  1459. //MnuCctvId->Caption = "[CCTV] " + FSelId + " " + sLoc;
  1460. MnuCctvId->Caption = "[CCTV] " + sLoc;
  1461. }
  1462. else
  1463. if (pMenu->Tag == 1)
  1464. {
  1465. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(FSelId);
  1466. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->VMS_NM);
  1467. //MnuVmsId->Caption = "[VMS] " + FSelId + " " + sLoc;
  1468. MnuVmsId->Caption = "[VMS] " + sLoc;
  1469. }
  1470. else
  1471. if (pMenu->Tag == 2)
  1472. {
  1473. TItsRse *pObj = ItsFacilityManager->FRseLists.Find(FSelId);
  1474. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->LOCATION);
  1475. //MnuRseId->Caption = "[RSE] " + FSelId + " " + sLoc;
  1476. MnuRseId->Caption = "[RSE] " + sLoc;
  1477. }
  1478. else
  1479. if (pMenu->Tag == 3)
  1480. {
  1481. TItsWebCam *pObj = ItsFacilityManager->FWebCamLists.Find(FSelId);
  1482. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->ISTL_LCTN_NM);
  1483. //MnuWebCamId->Caption = "[웹카메라] " + FSelId + " " + sLoc;
  1484. MnuWebCamId->Caption = "[웹카메라] " + sLoc;
  1485. }
  1486. else
  1487. if (pMenu->Tag == 4)
  1488. {
  1489. TItsVds *pObj = ItsFacilityManager->FVdsLists.Find(FSelId);
  1490. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->LCTN);
  1491. //MnuVdsId->Caption = "[VDS] " + FSelId + " " + sLoc;
  1492. MnuVdsId->Caption = "[VDS] " + sLoc;
  1493. }
  1494. else
  1495. if (pMenu->Tag == 5)
  1496. {
  1497. TItsAvi *pObj = ItsFacilityManager->FAviLists.Find(FSelId);
  1498. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->AVI_LCTN_NM);
  1499. //MnuAviId->Caption = "[AVI] " + FSelId + " " + sLoc;
  1500. MnuAviId->Caption = "[AVI] " + sLoc;
  1501. }
  1502. else
  1503. if (pMenu->Tag == 6)
  1504. {
  1505. TItsDsrc *pObj = ItsFacilityManager->FDsrcLists.Find(FSelId);
  1506. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->ISTL_LCTN_NM);
  1507. //MnuDsrcId->Caption = "[DSRC] " + FSelId + " " + sLoc;
  1508. MnuDsrcId->Caption = "[DSRC] " + sLoc;
  1509. }
  1510. }
  1511. //---------------------------------------------------------------------------
  1512. void __fastcall TITS00MAP::mnuFacilityPingClick(TObject *Sender)
  1513. {
  1514. TMenuItem *pMenu = (TMenuItem*)Sender;
  1515. String sIp;
  1516. Application->ProcessMessages();
  1517. if (pMenu->Tag >= 11 && 15 >= pMenu->Tag)
  1518. {
  1519. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(FSelId);
  1520. if (pObj)
  1521. {
  1522. switch(pMenu->Tag)
  1523. {
  1524. case 12: sIp = pObj->CCTV_CAPT_IP.Trim(); break;
  1525. case 13: sIp = pObj->CCTV_ENCD_IP.Trim(); break;
  1526. case 14: sIp = pObj->STRM_SVR_IP.Trim(); break;
  1527. case 15: sIp = pObj->CCTV_FIBR_IP.Trim(); break;
  1528. case 11:
  1529. default: sIp = pObj->CCTV_CTLR_IP.Trim(); break;
  1530. }
  1531. }
  1532. }
  1533. else
  1534. if (pMenu->Tag >= 21 && 22 >= pMenu->Tag)
  1535. {
  1536. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(FSelId);
  1537. if (pObj)
  1538. {
  1539. switch(pMenu->Tag)
  1540. {
  1541. case 22: sIp = pObj->WEB_CMRA_IP.Trim(); break;
  1542. case 21:
  1543. default: sIp = pObj->VMS_CTLR_IP.Trim(); break;
  1544. }
  1545. }
  1546. }
  1547. else
  1548. if (pMenu->Tag == 2)
  1549. {
  1550. TItsRse *pObj = ItsFacilityManager->FRseLists.Find(FSelId);
  1551. if (pObj) sIp = pObj->RSEIP.Trim();
  1552. }
  1553. else
  1554. if (pMenu->Tag == 4)
  1555. {
  1556. TItsVds *pObj = ItsFacilityManager->FVdsLists.Find(FSelId);
  1557. if (pObj) sIp = pObj->TRMN_IP.Trim();
  1558. }
  1559. else
  1560. if (pMenu->Tag == 5)
  1561. {
  1562. TItsAvi *pObj = ItsFacilityManager->FAviLists.Find(FSelId);
  1563. if (pObj) sIp = pObj->AVI_CTLR_IP.Trim();
  1564. }
  1565. else
  1566. if (pMenu->Tag == 6)
  1567. {
  1568. TItsDsrc *pObj = ItsFacilityManager->FDsrcLists.Find(FSelId);
  1569. if (pObj) sIp = pObj->IP.Trim();
  1570. }
  1571. else
  1572. if (pMenu->Tag == 99)
  1573. {
  1574. TItsWebCam *pObj = ItsFacilityManager->FWebCamLists.Find(FSelId);
  1575. if (pObj) sIp = pObj->CMRA_IP.Trim();
  1576. }
  1577. if (sIp.IsEmpty())
  1578. {
  1579. Application->MessageBox(L"IP Address 정보가 없습니다.\r\nIP Address 정보를 확인하세요.",
  1580. L"네크워크 연결확인", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1581. return;
  1582. }
  1583. if (sIp != "")
  1584. {
  1585. ITSUtil_NetworkPing(sIp);
  1586. }
  1587. }
  1588. //---------------------------------------------------------------------------
  1589. void __fastcall TITS00MAP::mnuStopImageClick(TObject *Sender)
  1590. {
  1591. Application->ProcessMessages();
  1592. TPoint pt;
  1593. GetCursorPos(&pt);
  1594. pt = ITS0000M->ScreenToClient(pt);
  1595. ShowCctvStopImage(FSelId, pt);
  1596. }
  1597. //---------------------------------------------------------------------------
  1598. void __fastcall TITS00MAP::mnuCctvCamClick(TObject *Sender)
  1599. {
  1600. Application->ProcessMessages();
  1601. TPoint pt;
  1602. GetCursorPos(&pt);
  1603. pt = ITS0000M->ScreenToClient(pt);
  1604. ShowCctvCamera(FSelId, pt);
  1605. }
  1606. //---------------------------------------------------------------------------
  1607. void __fastcall TITS00MAP::mnuVmsMsgClick(TObject *Sender)
  1608. {
  1609. Application->ProcessMessages();
  1610. TPoint pt;
  1611. GetCursorPos(&pt);
  1612. pt = ITS0000M->ScreenToClient(pt);
  1613. ShowVmsMessage(FSelId, pt);
  1614. }
  1615. //---------------------------------------------------------------------------
  1616. void __fastcall TITS00MAP::mnuVmsCamClick(TObject *Sender)
  1617. {
  1618. Application->ProcessMessages();
  1619. TPoint pt;
  1620. GetCursorPos(&pt);
  1621. pt = ITS0000M->ScreenToClient(pt);
  1622. ShowVmsCamera(FSelId, pt);
  1623. }
  1624. //---------------------------------------------------------------------------
  1625. void __fastcall TITS00MAP::ShowCctvStopImage(String AId, TPoint pt)
  1626. {
  1627. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(AId);
  1628. if (!pObj) return;
  1629. try {
  1630. if (pObj->FData1)
  1631. {
  1632. TFrmCctvImg *pForm = (TFrmCctvImg *)pObj->FData1;
  1633. pForm->SetFocus();
  1634. pForm->LoadStopImage();
  1635. }
  1636. else
  1637. {
  1638. TFrmCctvImg *pForm = new TFrmCctvImg(ITS0000M);
  1639. pForm->Parent = ITS0000M;
  1640. if ((pt.x + pForm->Width + 5) > this->Width)
  1641. {
  1642. pt.x = this->Width - pForm->Width - 5;
  1643. }
  1644. if ((pt.y + pForm->Height + 5) > this->Height)
  1645. {
  1646. pt.y = this->Height - pForm->Height - 5;
  1647. }
  1648. pForm->Left = Left + pt.x;
  1649. pForm->Top = Top + pt.y;
  1650. pForm->FObj = pObj;
  1651. pObj->FData1 = (void*)pForm;
  1652. pForm->Show();
  1653. }
  1654. } catch(...) {}
  1655. }
  1656. //---------------------------------------------------------------------------
  1657. void __fastcall TITS00MAP::ShowCctvCamera(String AId, TPoint pt)
  1658. {
  1659. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(AId);
  1660. if (!pObj) return;
  1661. try {
  1662. if (pObj->FData2)
  1663. {
  1664. TFrmCctvCam *pForm = (TFrmCctvCam *)pObj->FData2;
  1665. pForm->SetFocus();
  1666. //pForm->RefreshCctv();
  1667. }
  1668. else
  1669. {
  1670. TFrmCctvCam *pForm = new TFrmCctvCam(ITS0000M);
  1671. pForm->Parent = ITS0000M;
  1672. if ((pt.x + pForm->Width + 5) > this->Width)
  1673. {
  1674. pt.x = this->Width - pForm->Width - 5;
  1675. }
  1676. if ((pt.y + pForm->Height + 5) > this->Height)
  1677. {
  1678. pt.y = this->Height - pForm->Height - 5;
  1679. }
  1680. pForm->Left = Left + pt.x;
  1681. pForm->Top = Top + pt.y;
  1682. pForm->FObj = pObj;
  1683. pObj->FData2 = (void*)pForm;
  1684. pForm->Show();
  1685. }
  1686. } catch(...) {}
  1687. }
  1688. //---------------------------------------------------------------------------
  1689. void __fastcall TITS00MAP::ShowVmsMessage(String AId, TPoint pt)
  1690. {
  1691. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(FSelId);
  1692. if (!pObj) return;
  1693. try {
  1694. if (pObj->FData1)
  1695. {
  1696. TFrmVmsMsg *pForm = (TFrmVmsMsg *)pObj->FData1;
  1697. pForm->SetFocus();
  1698. }
  1699. else
  1700. {
  1701. TFrmVmsMsg *pForm = new TFrmVmsMsg(ITS0000M, pObj);
  1702. pForm->Parent = ITS0000M;
  1703. int nHG = pForm->ClientHeight - pForm->PnlVmsMsgDisp->Height;
  1704. int nWG = pForm->ClientWidth - pForm->PnlVmsMsgDisp->Width;
  1705. #if 0
  1706. pForm->ClientHeight = nHG + pObj->Height;
  1707. pForm->ClientWidth = nWG + pObj->Width;
  1708. #endif
  1709. if ((pt.x + pForm->Width + 5) > this->Width)
  1710. {
  1711. pt.x = this->Width - pForm->Width - 5;
  1712. }
  1713. if ((pt.y + pForm->Height + 5) > this->Height)
  1714. {
  1715. pt.y = this->Height - pForm->Height - 5;
  1716. }
  1717. pForm->Left = Left + pt.x;
  1718. pForm->Top = Top + pt.y;
  1719. pObj->FData1 = (void*)pForm;
  1720. pForm->Show();
  1721. }
  1722. } catch(...) {}
  1723. }
  1724. //---------------------------------------------------------------------------
  1725. void __fastcall TITS00MAP::ShowVmsCamera(String AId, TPoint pt)
  1726. {
  1727. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(FSelId);
  1728. if (!pObj) return;
  1729. try {
  1730. if (pObj->FData2)
  1731. {
  1732. if (pObj->STRM_SESN_NM.Trim() == "icsview")
  1733. {
  1734. TFrmIcsCam *pForm = (TFrmIcsCam *)pObj->FData2;
  1735. pForm->SetFocus();
  1736. //pForm->RefreshVms();
  1737. }
  1738. else
  1739. {
  1740. TFrmVmsCam *pForm = (TFrmVmsCam *)pObj->FData2;
  1741. pForm->SetFocus();
  1742. //pForm->RefreshVms();
  1743. }
  1744. }
  1745. else
  1746. {
  1747. if (pObj->STRM_SESN_NM.Trim() == "icsview")
  1748. {
  1749. TFrmIcsCam *pForm = new TFrmIcsCam(ITS0000M);
  1750. pForm->Parent = ITS0000M;
  1751. if ((pt.x + pForm->Width + 5) > this->Width)
  1752. {
  1753. pt.x = this->Width - pForm->Width - 5;
  1754. }
  1755. if ((pt.y + pForm->Height + 5) > this->Height)
  1756. {
  1757. pt.y = this->Height - pForm->Height - 5;
  1758. }
  1759. pForm->Left = Left + pt.x;
  1760. pForm->Top = Top + pt.y;
  1761. pForm->FObj = pObj;
  1762. pObj->FData2 = (void*)pForm;
  1763. pForm->Show();
  1764. }
  1765. else
  1766. {
  1767. TFrmVmsCam *pForm = new TFrmVmsCam(ITS0000M);
  1768. pForm->Parent = ITS0000M;
  1769. if ((pt.x + pForm->Width + 5) > this->Width)
  1770. {
  1771. pt.x = this->Width - pForm->Width - 5;
  1772. }
  1773. if ((pt.y + pForm->Height + 5) > this->Height)
  1774. {
  1775. pt.y = this->Height - pForm->Height - 5;
  1776. }
  1777. pForm->Left = Left + pt.x;
  1778. pForm->Top = Top + pt.y;
  1779. pForm->FObj = pObj;
  1780. pObj->FData2 = (void*)pForm;
  1781. pForm->Show();
  1782. }
  1783. #if 0
  1784. TFrmVmsCam *pForm = new TFrmVmsCam(ITS0000M);
  1785. pForm->Parent = ITS0000M;
  1786. if ((pt.x + pForm->Width + 5) > this->Width)
  1787. {
  1788. pt.x = this->Width - pForm->Width - 5;
  1789. }
  1790. if ((pt.y + pForm->Height + 5) > this->Height)
  1791. {
  1792. pt.y = this->Height - pForm->Height - 5;
  1793. }
  1794. pForm->Left = Left + pt.x;
  1795. pForm->Top = Top + pt.y;
  1796. pForm->FObj = pObj;
  1797. pObj->FData2 = (void*)pForm;
  1798. pForm->Show();
  1799. #endif
  1800. }
  1801. } catch(...) {}
  1802. }
  1803. //---------------------------------------------------------------------------
  1804. void __fastcall TITS00MAP::RefreshGisLink()
  1805. {
  1806. SelectLinkById(g_SelLink.Level, g_SelLink.Id, true);
  1807. }
  1808. //---------------------------------------------------------------------------
  1809. void __fastcall TITS00MAP::MnuWebCamClick(TObject *Sender)
  1810. {
  1811. Application->ProcessMessages();
  1812. TPoint pt;
  1813. GetCursorPos(&pt);
  1814. pt = ITS0000M->ScreenToClient(pt);
  1815. ShowWebCamera(FSelId, pt);
  1816. }
  1817. //---------------------------------------------------------------------------
  1818. void __fastcall TITS00MAP::ShowWebCamera(String AId, TPoint pt)
  1819. {
  1820. TItsWebCam *pObj = ItsFacilityManager->FWebCamLists.Find(FSelId);
  1821. if (!pObj) return;
  1822. try {
  1823. if (pObj->FData2)
  1824. {
  1825. TFrmWebCam *pForm = (TFrmWebCam *)pObj->FData2;
  1826. #if 0
  1827. if ((pt.x + pForm->Width + 5) > this->Width)
  1828. {
  1829. pt.x = this->Width - pForm->Width - 5;
  1830. }
  1831. if ((pt.y + pForm->Height + 5) > this->Height)
  1832. {
  1833. pt.y = this->Height - pForm->Height - 5;
  1834. }
  1835. pForm->Left = Left + pt.x;
  1836. pForm->Top = Top + pt.y;
  1837. #endif
  1838. pForm->SetFocus();
  1839. }
  1840. else
  1841. {
  1842. TFrmWebCam *pForm = new TFrmWebCam(ITS0000M, pObj);
  1843. pForm->Parent = ITS0000M;
  1844. if ((pt.x + pForm->Width + 5) > this->Width)
  1845. {
  1846. pt.x = this->Width - pForm->Width - 5;
  1847. }
  1848. if ((pt.y + pForm->Height + 5) > this->Height)
  1849. {
  1850. pt.y = this->Height - pForm->Height - 5;
  1851. }
  1852. pForm->Left = Left + pt.x;
  1853. pForm->Top = Top + pt.y;
  1854. pObj->FData2 = (void*)pForm;
  1855. pForm->Show();
  1856. }
  1857. } catch(...) {}
  1858. }
  1859. //---------------------------------------------------------------------------
  1860. void __fastcall TITS00MAP::TmrLblTrafficTimer(TObject *Sender)
  1861. {
  1862. TmrLblTraffic->Enabled = false;
  1863. LblTraffic->Visible = false;
  1864. }
  1865. //---------------------------------------------------------------------------
  1866. void __fastcall TITS00MAP::FormResize(TObject *Sender)
  1867. {
  1868. ShockwaveFlash1->Align = alClient;
  1869. }
  1870. //---------------------------------------------------------------------------
  1871. void __fastcall TITS00MAP::ShowHideFacility()
  1872. {
  1873. if (!MapStart) return;
  1874. String sFacility;
  1875. String sShowIcon;
  1876. String sShowInfo;
  1877. sFacility = FAC_CCTV;
  1878. sShowIcon = ChkDrawCtv->Checked ? "1" : "0";
  1879. sShowInfo = "0";
  1880. TCommFlash::CallFunc(ShockwaveFlash1, "ShowFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo);
  1881. sFacility = FAC_VMS;
  1882. sShowIcon = ChkDrawVms->Checked ? "1" : "0";
  1883. sShowInfo = "0";
  1884. TCommFlash::CallFunc(ShockwaveFlash1, "ShowFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo);
  1885. sFacility = FAC_RSE;
  1886. sShowIcon = ChkDrawRse->Checked ? "1" : "0";
  1887. sShowInfo = "0";
  1888. TCommFlash::CallFunc(ShockwaveFlash1, "ShowFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo);
  1889. sFacility = FAC_WCAM;
  1890. sShowIcon = ChkWebCam->Checked ? "1" : "0";
  1891. sShowInfo = "0";
  1892. TCommFlash::CallFunc(ShockwaveFlash1, "ShowFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo);
  1893. sFacility = FAC_VDS;
  1894. sShowIcon = ChkDrawVds->Checked ? "1" : "0";
  1895. sShowInfo = "0";
  1896. TCommFlash::CallFunc(ShockwaveFlash1, "ShowFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo);
  1897. sFacility = FAC_AVI;
  1898. sShowIcon = ChkDrawAvi->Checked ? "1" : "0";
  1899. sShowInfo = "0";
  1900. TCommFlash::CallFunc(ShockwaveFlash1, "ShowFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo);
  1901. sFacility = FAC_DSRC;
  1902. sShowIcon = ChkDrawDsrc->Checked ? "1" : "0";
  1903. sShowInfo = "0";
  1904. TCommFlash::CallFunc(ShockwaveFlash1, "ShowFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo);
  1905. sFacility = FAC_PARK;
  1906. sShowIcon = ChkDrawPark->Checked ? "1" : "0";
  1907. sShowInfo = "0";
  1908. TCommFlash::CallFunc(ShockwaveFlash1, "ShowFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo);
  1909. sFacility = FAC_INCD;
  1910. sShowIcon = ChkDrawIncident->Checked ? "1" : "0";
  1911. sShowInfo = "0";
  1912. TCommFlash::CallFunc(ShockwaveFlash1, "ShowFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo);
  1913. }
  1914. //---------------------------------------------------------------------------
  1915. void __fastcall TITS00MAP::ShockwaveFlash1FlashCall(TObject *ASender, const WideString request)
  1916. {
  1917. try
  1918. {
  1919. String sTemp;
  1920. String sFunc;
  1921. String sArgs;
  1922. //<invoke name="Debug" returntype="xml"><arguments><string>KKK|LinkMap 1</string></arguments></invoke>
  1923. sTemp = request;
  1924. int nFuncStrIdx = sTemp.Pos("\"");
  1925. int nFuncEndIdx = sTemp.Pos("\" returntype");
  1926. int nArgsStrIdx = sTemp.Pos("string>");
  1927. int nArgsEndIdx = sTemp.Pos("</string");
  1928. sFunc = sTemp.SubString(nFuncStrIdx + 1, nFuncEndIdx - (nFuncStrIdx + 1));
  1929. sArgs = sTemp.SubString(nArgsStrIdx + 7, nArgsEndIdx - (nArgsStrIdx + 7));
  1930. //Memo1->Lines->Add("[" + sFunc + "] [" + sArgs + "]");
  1931. if (sFunc == "OnMapStart")
  1932. {
  1933. MapStart = true;
  1934. LblZoomLevel->Caption = sArgs;
  1935. TCommFlash::CallFunc(ShockwaveFlash1, "MultiSelect", "0");
  1936. String sFacility = "";
  1937. sFacility += FAC_CCTV + "|";
  1938. sFacility += FAC_VMS + "|";
  1939. sFacility += FAC_RSE + "|";
  1940. sFacility += FAC_WCAM + "|";
  1941. sFacility += FAC_VDS + "|";
  1942. sFacility += FAC_AVI + "|";
  1943. sFacility += FAC_DSRC + "|";
  1944. sFacility += FAC_PARK + "|";
  1945. sFacility += FAC_INCD + "|";
  1946. TCommFlash::CallFunc(ShockwaveFlash1, "AddFacilityKind", sFacility);
  1947. ChkTrafficLayerClick(NULL); //소통정보/힌트표출여부
  1948. PbLoadMap->Position = 20;
  1949. PbLoadMap->Properties->Text = "노드정보 로딩 중...";
  1950. Application->ProcessMessages();
  1951. TCommFlash::CallFunc(ShockwaveFlash1, "LoadNode", "1");
  1952. }
  1953. else
  1954. if (sFunc == "OnZoomChanged")
  1955. {
  1956. TStringList *pStringList = new TStringList;
  1957. pStringList->CommaText = sArgs;
  1958. String sZoom = pStringList->Strings[0];
  1959. delete pStringList;
  1960. LblZoomLevel->Caption = sZoom;
  1961. switch(sZoom.ToIntDef(0))
  1962. {
  1963. case 1: m_nMapLevel = 1; break; //LINK
  1964. case 2: m_nMapLevel = 2; break; //IFSC
  1965. case 3: m_nMapLevel = 2; break; //IFSC
  1966. case 4: m_nMapLevel = 2; break; //IFSC
  1967. case 5: m_nMapLevel = 3; break; //ROAD
  1968. default: m_nMapLevel = 3; break; //ROAD
  1969. }
  1970. LblLinkLevel->Caption = String(m_nMapLevel);
  1971. }
  1972. else
  1973. if (sFunc == "OnMousePos")
  1974. {
  1975. TStringList *pStringList = new TStringList;
  1976. pStringList->CommaText = sArgs;
  1977. String sMapX = pStringList->Strings[0]; //lat
  1978. String sMapY = pStringList->Strings[1]; //lng
  1979. delete pStringList;
  1980. try {
  1981. SePosX->Value = sMapX.ToDouble();
  1982. SePosY->Value = sMapY.ToDouble();
  1983. } catch(...) {}
  1984. }
  1985. else
  1986. if (sFunc == "OnNodeLoad")
  1987. {
  1988. PbLoadMap->Position = 30;
  1989. PbLoadMap->Properties->Text = "링크정보 로딩 중...";
  1990. Application->ProcessMessages();
  1991. TCommFlash::CallFunc(ShockwaveFlash1, "LoadLink", "1");
  1992. }
  1993. else
  1994. if (sFunc == "OnLinkLoad")
  1995. {
  1996. TStringList *pStringList = new TStringList;
  1997. pStringList->CommaText = sArgs;
  1998. String sResult = pStringList->Strings[0];
  1999. String sLevel = pStringList->Strings[1];
  2000. delete pStringList;
  2001. if (sLevel == "1")
  2002. {
  2003. PbLoadMap->Position = 40;
  2004. PbLoadMap->Properties->Text = "정보제공구간정보 로딩 중...";
  2005. Application->ProcessMessages();
  2006. TCommFlash::CallFunc(ShockwaveFlash1, "LoadLink", "2");
  2007. }
  2008. else
  2009. if (sLevel == "2")
  2010. {
  2011. PbLoadMap->Position = 50;
  2012. PbLoadMap->Properties->Text = "도로정보 로딩 중...";
  2013. Application->ProcessMessages();
  2014. TCommFlash::CallFunc(ShockwaveFlash1, "LoadLink", "3");
  2015. }
  2016. else
  2017. if (sLevel == "3")
  2018. {
  2019. PbLoadMap->Position = 60;
  2020. PbLoadMap->Properties->Text = "링크버텍스정보 로딩 중...";
  2021. Application->ProcessMessages();
  2022. TCommFlash::CallFunc(ShockwaveFlash1, "LoadLinkVertex", "1");
  2023. }
  2024. }
  2025. else
  2026. if (sFunc == "OnLinkVertexLoad")
  2027. {
  2028. TStringList *pStringList = new TStringList;
  2029. pStringList->CommaText = sArgs;
  2030. String sResult = pStringList->Strings[0];
  2031. String sLevel = pStringList->Strings[1];
  2032. delete pStringList;
  2033. if (sLevel == "1")
  2034. {
  2035. PbLoadMap->Position = 70;
  2036. PbLoadMap->Properties->Text = "정보제공구간버텍스정보 로딩 중...";
  2037. Application->ProcessMessages();
  2038. TCommFlash::CallFunc(ShockwaveFlash1, "LoadLinkVertex", "2");
  2039. }
  2040. else
  2041. if (sLevel == "2")
  2042. {
  2043. PbLoadMap->Position = 80;
  2044. PbLoadMap->Properties->Text = "도로버텍스정보 로딩 중...";
  2045. Application->ProcessMessages();
  2046. TCommFlash::CallFunc(ShockwaveFlash1, "LoadLinkVertex", "3");
  2047. }
  2048. else
  2049. if (sLevel == "3")
  2050. {
  2051. PbLoadMap->Position = 90;
  2052. PbLoadMap->Properties->Text = "시설물정보 로딩 중...";
  2053. Application->ProcessMessages();
  2054. UpdateFacilityStatus(); //시설물 추가
  2055. UpdateIncidentStatus(); //돌발추가
  2056. RefreshMapTraffic(); //소통정보 업데이트
  2057. //TCommFlash::CallFunc(ShockwaveFlash1, "RefreshMap", "1");
  2058. PnlProgress->Visible = false;
  2059. }
  2060. }
  2061. else
  2062. if (sFunc == "OnFindLink")
  2063. {
  2064. TStringList *pStringList = new TStringList;
  2065. pStringList->CommaText = sArgs;
  2066. String sResult = pStringList->Strings[0]; //Find resule
  2067. String sLinkId = pStringList->Strings[1]; //Link Id
  2068. delete pStringList;
  2069. }
  2070. else
  2071. if (sFunc == "OnSelLink")
  2072. {
  2073. TStringList *pStringList = new TStringList;
  2074. pStringList->CommaText = sArgs;
  2075. String sLevl = pStringList->Strings[0]; //링크레벨
  2076. String sId = pStringList->Strings[1]; //링크아이디
  2077. String sZoom = pStringList->Strings[2]; //줌레벨
  2078. String sPosX = pStringList->Strings[3]; //x
  2079. String sPosY = pStringList->Strings[4]; //y
  2080. String sMapX = pStringList->Strings[5]; //lat
  2081. String sMapY = pStringList->Strings[6]; //lng
  2082. delete pStringList;
  2083. try {
  2084. SePosX->Value = sMapX.ToDouble();
  2085. SePosY->Value = sMapY.ToDouble();
  2086. ShowLinkDetailInfo(sId, sLevl.ToIntDef(1));
  2087. } catch(...) {}
  2088. }
  2089. else
  2090. if (sFunc == "OnMousePouup")
  2091. {
  2092. TStringList *pStringList = new TStringList;
  2093. pStringList->CommaText = sArgs;
  2094. String sType = pStringList->Strings[0]; //유형
  2095. String sId = pStringList->Strings[1]; //아이디
  2096. String sPosX = pStringList->Strings[2]; //x
  2097. String sPosY = pStringList->Strings[3]; //y
  2098. String sInfo = pStringList->Strings[4]; //정보
  2099. delete pStringList;
  2100. //if (ModeSelect)
  2101. {
  2102. OnMapPopupMenu(sType, sId, sPosX, sPosY, sInfo);
  2103. }
  2104. }
  2105. else
  2106. if (sFunc == "OnFacilityMenu")
  2107. {
  2108. TStringList *pStringList = new TStringList;
  2109. pStringList->CommaText = sArgs;
  2110. String sType = pStringList->Strings[0]; //시설물유형
  2111. String sId = pStringList->Strings[1]; //시설물아이디
  2112. String sPosX = pStringList->Strings[2]; //x
  2113. String sPosY = pStringList->Strings[3]; //y
  2114. delete pStringList;
  2115. //Memo1->Lines->Add(sType + " : " + sId + " " + sPosX + " : " + sPosY);
  2116. FSelId = sId;
  2117. POINT p;
  2118. GetCursorPos(&p);
  2119. if (sType == "CCTV")
  2120. {
  2121. pmuCctv->Popup(p.x, p.y);
  2122. }
  2123. else
  2124. if (sType == "VMS")
  2125. {
  2126. pmuVms->Popup(p.x, p.y);
  2127. }
  2128. else
  2129. if (sType == "RSE")
  2130. {
  2131. pmuRse->Popup(p.x, p.y);
  2132. }
  2133. else
  2134. if (sType == "WCAM")
  2135. {
  2136. pmuWebCam->Popup(p.x, p.y);
  2137. }
  2138. else
  2139. if (sType == "VDS")
  2140. {
  2141. pmuVds->Popup(p.x, p.y);
  2142. }
  2143. else
  2144. if (sType == "AVI")
  2145. {
  2146. pmuAvi->Popup(p.x, p.y);
  2147. }
  2148. else
  2149. if (sType == "DSRC")
  2150. {
  2151. pmuDsrc->Popup(p.x, p.y);
  2152. }
  2153. }
  2154. }
  2155. catch(Exception &exception)
  2156. {
  2157. }
  2158. }
  2159. //---------------------------------------------------------------------------
  2160. void __fastcall TITS00MAP::OnMapPopupMenu(String AType, String AId, String APosX, String APosY, String AInfo)
  2161. {
  2162. FSelId = AId;
  2163. POINT p;
  2164. GetCursorPos(&p);
  2165. if (AType == "CCTV")
  2166. {
  2167. pmuCctv->Popup(p.x, p.y);
  2168. }
  2169. else
  2170. if (AType == "VMS")
  2171. {
  2172. pmuVms->Popup(p.x, p.y);
  2173. }
  2174. else
  2175. if (AType == "RSE")
  2176. {
  2177. pmuRse->Popup(p.x, p.y);
  2178. }
  2179. else
  2180. if (AType == "WCAM")
  2181. {
  2182. pmuWebCam->Popup(p.x, p.y);
  2183. }
  2184. else
  2185. if (AType == "VDS")
  2186. {
  2187. pmuVds->Popup(p.x, p.y);
  2188. }
  2189. else
  2190. if (AType == "AVI")
  2191. {
  2192. pmuAvi->Popup(p.x, p.y);
  2193. }
  2194. else
  2195. if (AType == "DSRC")
  2196. {
  2197. pmuDsrc->Popup(p.x, p.y);
  2198. }
  2199. else
  2200. if (AType == "MAP")
  2201. {
  2202. pmuGis->Popup(p.x, p.y);
  2203. }
  2204. else
  2205. if (AType == "LINK")
  2206. {
  2207. //AInfo == LinkId
  2208. //pmuGis->Popup(p.x, p.y);
  2209. }
  2210. }
  2211. //---------------------------------------------------------------------------
  2212. void __fastcall TITS00MAP::SelGisItem(int AType, String AId)
  2213. {
  2214. try
  2215. {
  2216. if (!MapStart) return;
  2217. switch(AType)
  2218. {
  2219. case 0: TCommFlash::CallFunc(ShockwaveFlash1, "MoveNode", AId); break;
  2220. case 1: TCommFlash::CallFunc(ShockwaveFlash1, "FindLink", AId); break;
  2221. case 2: TCommFlash::CallFunc(ShockwaveFlash1, "FindLink", AId); break;
  2222. case 3: TCommFlash::CallFunc(ShockwaveFlash1, "FindLink", AId); break;
  2223. default: return;
  2224. }
  2225. }
  2226. catch(...)
  2227. {
  2228. }
  2229. }
  2230. //---------------------------------------------------------------------------
  2231. void __fastcall TITS00MAP::PnlToolBarDblClick(TObject *Sender)
  2232. {
  2233. Memo1->Visible = !Memo1->Visible;
  2234. }
  2235. //---------------------------------------------------------------------------
  2236. void __fastcall TITS00MAP::ShowLayerEditForm()
  2237. {
  2238. }
  2239. //---------------------------------------------------------------------------