ITS00MAPF.cpp 87 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "CDSTrafficGradeF.h"
  6. #include "CDSFacilityF.h"
  7. #include "CDSIncidentF.h"
  8. #include "CDSTrafficF.h"
  9. #include "CDSParkingF.h"
  10. #include "CDSLinkF.h"
  11. #include "CDSIfscF.h"
  12. #include "CDSRoadF.h"
  13. #include "ITSLangTransF.h"
  14. #pragma hdrstop
  15. #include "ITS00MAPF.h"
  16. #include "ITS0000MF.h"
  17. #include "FrmCctvImgF.h"
  18. #include "FrmVmsMsgF.h"
  19. #include "FrmLinkInfoF.h"
  20. #include "FrmGisSearchF.h"
  21. #include "FrmMainF.h"
  22. #include "CommFlashF.h"
  23. #include "FrmStreamPlayerF.h"
  24. //---------------------------------------------------------------------------
  25. #pragma package(smart_init)
  26. #pragma link "GMMapVCL"
  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 "dxSkinsCore"
  44. #pragma link "GMClasses"
  45. #pragma link "GMLinkedComponents"
  46. #pragma link "GMMap"
  47. #pragma link "GMMapVCL"
  48. #pragma link "GMMarker"
  49. #pragma link "GMMarkerVCL"
  50. #pragma link "GMPolygonVCL"
  51. #pragma link "GMPolyline"
  52. #pragma link "GMPolylineVCL"
  53. #pragma link "cxButtons"
  54. #pragma resource "*.dfm"
  55. //---------------------------------------------------------------------------
  56. TITS00MAP *ITS00MAP = NULL;
  57. //---------------------------------------------------------------------------
  58. #define MAP_ZOOM_LINK 16
  59. #define MAP_ZOOM_IFSC 14
  60. #define MAP_ZOOM_ROAD 12
  61. #define MAP_ZOOM_MAX_ROAD 12
  62. #define MAP_ZOOM_MIN_LINK 16
  63. TColor g_clrStatus[5] = {
  64. clGreen,
  65. clRed,
  66. clYellow,
  67. clBlack,//clSilver,
  68. clBlack,//clSilver,
  69. };
  70. String g_strStatus[5] = {
  71. "", "", "", "", "",
  72. };
  73. String g_strIncident[6] = {
  74. "", "사고", "공사", "행사", "기상", "기타",
  75. };
  76. TColor g_clrTraffic[4] = {
  77. clGray,
  78. clLime,
  79. clYellow,
  80. clRed,
  81. };
  82. String g_strTraffic[4] = {
  83. "", "", "", "",
  84. };
  85. //---------------------------------------------------------------------------
  86. __fastcall TITS00MAP::TITS00MAP(TComponent* Owner, TForm *ParentForm)
  87. : TForm(Owner)
  88. {
  89. ::CoInitialize(NULL);
  90. LangTrans->Translate(this, ITSDb_GetConnection());
  91. ITSSkin_Load(this);
  92. LoadLocalSkin();
  93. panRemark->Visible = false;
  94. FMapLinkLevel = 1;
  95. //마우스 제어 플래그 초기화
  96. m_bMouseDown = false;
  97. m_bMoveCenter = false;
  98. m_bCalcMode = false;
  99. m_bCalcCont = false;
  100. m_ptDown.x = m_ptDown.y = 0;
  101. MapInit = false;
  102. MapStart = false;
  103. ModeSelect = false;
  104. FIsBrowserLoading = false;
  105. g_strStatus[0] = FrmLang->lblStatus0->Caption;
  106. g_strStatus[1] = FrmLang->lblStatus1->Caption;
  107. g_strStatus[2] = FrmLang->lblStatus2->Caption;
  108. g_strStatus[3] = FrmLang->lblStatus3->Caption;
  109. g_strStatus[4] = FrmLang->lblStatus3->Caption;
  110. g_strIncident[0] = "";
  111. g_strIncident[1] = FrmLang->lblInc1->Caption;
  112. g_strIncident[2] = FrmLang->lblInc2->Caption;
  113. g_strIncident[3] = FrmLang->lblInc3->Caption;
  114. g_strIncident[4] = FrmLang->lblInc4->Caption;
  115. g_strIncident[5] = FrmLang->lblInc0->Caption;
  116. g_strTraffic[0] = FrmLang->lblLTC0->Caption;
  117. g_strTraffic[1] = FrmLang->lblLTC1->Caption;
  118. g_strTraffic[2] = FrmLang->lblLTC2->Caption;
  119. g_strTraffic[3] = FrmLang->lblLTC3->Caption;
  120. InitMap();
  121. }
  122. //---------------------------------------------------------------------------
  123. void __fastcall TITS00MAP::LoadLocalSkin()
  124. {
  125. }
  126. //---------------------------------------------------------------------------
  127. void __fastcall TITS00MAP::FormDestroy(TObject *Sender)
  128. {
  129. try
  130. {
  131. CommClose();
  132. }
  133. catch (Exception& e)
  134. {
  135. }
  136. ::CoUninitialize();
  137. }
  138. //---------------------------------------------------------------------------
  139. void __fastcall TITS00MAP::FormShow(TObject *Sender)
  140. {
  141. Refresh();
  142. FormInit();
  143. Application->ProcessMessages();
  144. TmrShow->Enabled = true;
  145. }
  146. //---------------------------------------------------------------------------
  147. void __fastcall TITS00MAP::CommClose()
  148. {
  149. if (FCenLatLng) delete FCenLatLng;
  150. if (FMinLatLng) delete FMinLatLng;
  151. if (FMaxLatLng) delete FMaxLatLng;
  152. if (FMapBounds) delete FMapBounds;
  153. FCenLatLng = NULL;
  154. FMaxLatLng = NULL;
  155. FMinLatLng = NULL;
  156. FMapBounds = NULL;
  157. FOR_STL(TItsVms *, pObj, ItsFacilityManager->FVmsLists)
  158. {
  159. pObj->FMarker = NULL;
  160. }
  161. //ITS00MAP = NULL;
  162. }
  163. //---------------------------------------------------------------------------
  164. bool __fastcall TITS00MAP::FormInit()
  165. {
  166. return true;
  167. }
  168. //---------------------------------------------------------------------------
  169. void __fastcall TITS00MAP::InitMap()
  170. {
  171. FSelLink = NULL;
  172. FIsDragginStart = false;
  173. FIsDragginEnd = false;
  174. FIsDragging = false;
  175. memset((char*) & FPrev, 0x00, sizeof(FPrev));
  176. memset((char*) & FExtent, 0x00, sizeof(FExtent));
  177. FExtent.Extent = true;
  178. FExtent.TotCnt = 0;
  179. FExtent.CurIdx = 0;
  180. #if 0
  181. FSelLink = GMPolySelect->Items[0];
  182. if (FSelLink == NULL)
  183. FSelLink = GMPolySelect->Items[0];
  184. if (FSelLink)
  185. {
  186. FSelLink->StrokeWeight = 8;
  187. FSelLink->StrokeOpacity = 1;
  188. FSelLink->AutoUpdatePath = true;
  189. FSelLink->Visible = true;
  190. FSelLink->Clickable = true;
  191. FSelLink->StrokeColor = clGreen;
  192. }
  193. #endif
  194. }
  195. //---------------------------------------------------------------------------
  196. void __fastcall TITS00MAP::AddExtentQ(double ALat, double ALng, int FZoom)
  197. {
  198. TGisExtent *pExt = &FExtent.extent[FExtent.TotCnt];
  199. pExt->Lat = ALat;
  200. pExt->Lng = ALng;
  201. pExt->Zoom = (short)FZoom;
  202. if (FPrev.Lat == pExt->Lat && FPrev.Lng == pExt->Lng && FPrev.Zoom == pExt->Zoom)
  203. {
  204. return;
  205. }
  206. FPrev.Lat = pExt->Lat;
  207. FPrev.Lat = pExt->Lng;
  208. FPrev.Zoom = pExt->Zoom;
  209. FExtent.TotCnt++;
  210. if (FExtent.TotCnt >= D_EXT_QUEUE_SIZE)
  211. {
  212. FExtent.TotCnt = D_EXT_QUEUE_SIZE;
  213. memcpy((char*) & FExtent.extent[0], (char*) & FExtent.extent[1], sizeof(TGisExtent) * D_EXT_QUEUE_SIZE);
  214. }
  215. FExtent.CurIdx = FExtent.TotCnt - 1;
  216. if (FExtent.TotCnt > 1)
  217. {
  218. // BtnZoomPrev->Enabled = true;
  219. }
  220. }
  221. //---------------------------------------------------------------------------
  222. void __fastcall TITS00MAP::PrevExtentQ()
  223. {
  224. FExtent.Extent = false;
  225. if (FExtent.CurIdx <= 0)
  226. {
  227. FExtent.CurIdx = 0;
  228. return;
  229. }
  230. FExtent.CurIdx--;
  231. if (FExtent.CurIdx == 0)
  232. {
  233. // BtnZoomPrev->Enabled = false;
  234. }
  235. TGisExtent *pExt = &FExtent.extent[FExtent.CurIdx];
  236. if (GMMap1->Active)
  237. {
  238. GMMap1->SetCenter(pExt->Lat, pExt->Lng);
  239. GMMap1->RequiredProp->Zoom = (int)pExt->Zoom;
  240. }
  241. // BtnZoomNext->Enabled = true;
  242. }
  243. //---------------------------------------------------------------------------
  244. void __fastcall TITS00MAP::NextExtentQ()
  245. {
  246. FExtent.Extent = false;
  247. if (FExtent.CurIdx >= FExtent.TotCnt - 1)
  248. {
  249. FExtent.CurIdx = FExtent.TotCnt - 1;
  250. return;
  251. }
  252. FExtent.CurIdx++;
  253. if (FExtent.CurIdx == FExtent.TotCnt - 1)
  254. {
  255. // BtnZoomNext->Enabled = false;
  256. }
  257. TGisExtent *pExt = &FExtent.extent[FExtent.CurIdx];
  258. if (GMMap1->Active)
  259. {
  260. GMMap1->SetCenter(pExt->Lat, pExt->Lng);
  261. GMMap1->RequiredProp->Zoom = (int)pExt->Zoom;
  262. }
  263. // BtnZoomPrev->Enabled = true;
  264. }
  265. //---------------------------------------------------------------------------
  266. void __fastcall TITS00MAP::TmrShowTimer(TObject *Sender)
  267. {
  268. TmrShow->Enabled = false;
  269. Application->ProcessMessages();
  270. LoadGisMap();
  271. }
  272. //---------------------------------------------------------------------------
  273. void __fastcall TITS00MAP::LoadGisMap()
  274. {
  275. try
  276. {
  277. try
  278. {
  279. FMapZoom = g_GisInfo.nZoomLevel;
  280. FInitMapZoom = FMapZoom;
  281. GMMap1->APIKey = g_GisInfo.sApiKey; //AIzaSyAIsksX4UwawWlZWwOqwlWAXP12GsjkPz8
  282. GMMap1->RequiredProp->Zoom = FInitMapZoom;
  283. GMMap1->RequiredProp->Center->Lat = g_GisInfo.dCenterX;
  284. GMMap1->RequiredProp->Center->Lng = g_GisInfo.dCenterY;
  285. PnlZoom->Caption = "Link: " + String(FMapLinkLevel) + ", Zoom: " + String(FMapZoom);
  286. //GMMap1->NonVisualProp->MaxZoom = ;
  287. //GMMap1->NonVisualProp->MinZoom = ;
  288. //GMMap1->RequiredProp->MapType = mtROADMAP; //enum TMapTypeId { mtHYBRID, mtROADMAP, mtSATELLITE, mtTERRAIN, mtOSM };
  289. FCenLatLng = new TLatLng(GMMap1->RequiredProp->Center->Lat, GMMap1->RequiredProp->Center->Lng);
  290. FMinLatLng = new TLatLng(0, 0);
  291. FMaxLatLng = new TLatLng(0, 0);
  292. FMapBounds = new TLatLngBounds(0, 0, 0, 0);
  293. FCenterLat = GMMap1->RequiredProp->Center->Lat;
  294. FCenterLng = GMMap1->RequiredProp->Center->Lng;
  295. TMarker *pMarker = GMMarkerPos->Items[0];
  296. if (pMarker == NULL)
  297. pMarker = GMMarkerPos->Items[0];
  298. if (pMarker)
  299. {
  300. pMarker->Icon = g_sImageDir + "pos.png";
  301. }
  302. // 지도로딩 상태바 표출
  303. PnlProgress->Left = (this->Width - PnlProgress->Width) / 2;
  304. PnlProgress->Top = (this->Height - PnlProgress->Height) / 2;
  305. PnlProgress->Top -= 50;
  306. PnlProgress->Visible = true;
  307. PbLoadMap->Properties->Text = lblStep2->Caption;//"지도 표출색상 정보 로딩 중...";
  308. Application->ProcessMessages();
  309. PbLoadMap->Position = 50;
  310. TUTISLinkGrade UtisLinkColor;
  311. GetGisTrafficColor(UtisLinkColor);
  312. PbLoadMap->Position = 100;
  313. PbLoadMap->Properties->Text = lblStep2->Caption;//"지도 로딩 중...";
  314. Application->ProcessMessages();
  315. if (!GMMap1->Active)
  316. {
  317. GMMap1->Active = true;
  318. }
  319. RemoveMarker(GMMarkerVms);
  320. RemoveMarker(GMMarkerVds);
  321. InitGisRegion();
  322. InitGisTraffic();
  323. UpdateGisVms();
  324. UpdateGisVds();
  325. UpdateGisIncident();
  326. GMMarkerPos->Map = GMMap1;
  327. }
  328. catch (Exception &e)
  329. {
  330. }
  331. }
  332. __finally
  333. {
  334. PnlProgress->Visible = false;
  335. MapInit = true;
  336. PnlGisTool->Visible = true;
  337. }
  338. }
  339. //---------------------------------------------------------------------------
  340. void __fastcall TITS00MAP::InitGisRegion()
  341. {
  342. TGMPolygon *pRgn = GMPolygonRgn;
  343. int ii;
  344. TStringList *sl = NULL;
  345. pRgn->Map = NULL;
  346. try
  347. {
  348. sl = new TStringList;
  349. sl->Delimiter = ',';
  350. sl->StrictDelimiter = true;
  351. if (ItsLinkManager->FRegionPointCnt < 3) return;
  352. sl->DelimitedText = ItsLinkManager->FRegionVertex;
  353. if (sl->Count != ItsLinkManager->FRegionPointCnt * 2)
  354. {
  355. return;
  356. }
  357. TPolygon *pPoly = pRgn->Add();
  358. if (!pPoly) return;
  359. for (ii = 0; ii < sl->Count-1; )
  360. {
  361. pPoly->AddLinePoint(sl->Strings[ii+1].ToDouble(), sl->Strings[ii].ToDouble());
  362. ii += 2;
  363. }
  364. pPoly->StrokeColor = clBlack;
  365. pPoly->StrokeOpacity = 1;
  366. pPoly->StrokeWeight = 1;
  367. pPoly->FillColor = clBackground;
  368. pPoly->FillOpacity = 0.2;
  369. pPoly->Visible = true;
  370. pPoly->Clickable = false;
  371. pPoly->InfoWindow->DisableAutoPan = true;
  372. }
  373. __finally
  374. {
  375. if (sl) delete sl;
  376. pRgn->Map = ChkDrawCenter->Checked ? GMMap1 : NULL;
  377. }
  378. }
  379. //---------------------------------------------------------------------------
  380. void __fastcall TITS00MAP::InitGisTraffic()
  381. {
  382. TGMPolyline *pLink = GMPolyLink;
  383. TPolyline *pLn = NULL;
  384. DebugList("InitGisTraffic - link start");
  385. pLink = GMPolyLink;
  386. try
  387. {
  388. ItsLinkManager->FLists.Lock();
  389. FOR_STL(TItsLink*, pObj, ItsLinkManager->FLists)
  390. {
  391. if (pObj->Coords.Size() < 2) continue;
  392. pLn = pLink->Add();
  393. if (!pLn) continue;
  394. pLn->Tag = (int)pObj;
  395. pLn->FObject = (TObject*)&pObj->bounds;
  396. pLn->Text = pObj->LINK_ID;
  397. FOR_STL(TItsCoord*, pCoord, pObj->Coords)
  398. {
  399. pLn->AddLinePoint(pCoord->Y, pCoord->X);
  400. }
  401. pLn->StrokeWeight = 8;
  402. pLn->StrokeOpacity = 1;
  403. pLn->AutoUpdatePath = true;
  404. pLn->Visible = true;
  405. pLn->Clickable = true;
  406. pObj->FPolyLine = (void*)pLn;
  407. String sTrfGrade = g_strTraffic[pObj->TRAF->TRAF_GRAD];
  408. pLn->StrokeColor = g_clrTraffic[pObj->TRAF->TRAF_GRAD];
  409. String sContent = "";
  410. sContent += "<font style=\"font-weight:bold;color:#0000FF\">" + pObj->LINK_ID + "</font><br>";
  411. sContent += pObj->ROAD_NAME + "<br>";
  412. sContent += ITSUtil_StrToTime(pObj->TRAF->PRCN_DT) + "<br>";
  413. sContent += String(pObj->TRAF->SPED) + " km/h<br>";
  414. sContent += String(pObj->TRAF->TRVL_HH) + " seconds<br>";
  415. sContent += sTrfGrade + " <br>";
  416. sContent += "<html:hidden [LINK]" + pObj->LINK_ID + " />";
  417. #if 0
  418. pLn->InfoWindow->DisableAutoPan = true;
  419. pLn->InfoWindow->HTMLContent = sContent;
  420. #endif
  421. }
  422. }
  423. __finally
  424. {
  425. ItsLinkManager->FLists.UnLock();
  426. }
  427. DebugList("InitGisTraffic - link end, " + String(pLink->Count));
  428. DebugList("InitGisTraffic - ifsc start");
  429. pLink = GMPolyIfsc;
  430. try
  431. {
  432. ItsIfscManager->FLists.Lock();
  433. FOR_STL(TItsIfsc*, pObj, ItsIfscManager->FLists)
  434. {
  435. if (pObj->Coords.Size() < 2) continue;
  436. pLn = pLink->Add();
  437. if (!pLn) continue;
  438. pLn->Tag = (int)pObj;
  439. pLn->FObject = (TObject*)&pObj->bounds;
  440. pLn->Text = pObj->IFSC_ID;
  441. FOR_STL(TItsCoord*, pCoord, pObj->Coords)
  442. {
  443. pLn->AddLinePoint(pCoord->Y, pCoord->X);
  444. }
  445. pLn->StrokeWeight = 6;
  446. pLn->StrokeOpacity = 1;
  447. pLn->AutoUpdatePath = true;
  448. pLn->Visible = true;
  449. pLn->Clickable = true;
  450. pObj->FPolyLine = (void*)pLn;
  451. String sTrfGrade = g_strTraffic[pObj->TRAF->TRAF_GRAD];
  452. pLn->StrokeColor = g_clrTraffic[pObj->TRAF->TRAF_GRAD];
  453. String sContent = "";
  454. sContent += "<font style=\"font-weight:bold;color:#0000FF\">" + pObj->LINK_ID + "</font><br>";
  455. sContent += pObj->IFSC_NM + "<br>";
  456. sContent += ITSUtil_StrToTime(pObj->TRAF->PRCN_DT) + "<br>";
  457. sContent += String(pObj->TRAF->SPED) + " km/h<br>";
  458. sContent += String(pObj->TRAF->TRVL_HH) + " seconds<br>";
  459. sContent += sTrfGrade + " <br>";
  460. sContent += "<html:hidden [IFSC]" + pObj->IFSC_ID + " />";
  461. #if 0
  462. pLn->InfoWindow->DisableAutoPan = true;
  463. pLn->InfoWindow->HTMLContent = sContent;
  464. #endif
  465. }
  466. }
  467. __finally
  468. {
  469. ItsIfscManager->FLists.UnLock();
  470. }
  471. DebugList("InitGisTraffic - ifsc end, " + String(pLink->Count));
  472. DebugList("InitGisTraffic - road start");
  473. pLink = GMPolyRoad;
  474. try
  475. {
  476. ItsRoadManager->FLists.Lock();
  477. FOR_STL(TItsRoad*, pObj, ItsRoadManager->FLists)
  478. {
  479. if (pObj->Coords.Size() < 2) continue;
  480. pLn = pLink->Add();
  481. if (!pLn) continue;
  482. pLn->Tag = (int)pObj;
  483. pLn->FObject = (TObject*)&pObj->bounds;
  484. pLn->Text = pObj->ROAD_ID;
  485. FOR_STL(TItsCoord*, pCoord, pObj->Coords)
  486. {
  487. pLn->AddLinePoint(pCoord->Y, pCoord->X);
  488. }
  489. pLn->StrokeWeight = 4;
  490. pLn->StrokeOpacity = 1;
  491. pLn->AutoUpdatePath = true;
  492. pLn->Visible = true;
  493. pLn->Clickable = true;
  494. pObj->FPolyLine = (void*)pLn;
  495. String sTrfGrade = g_strTraffic[pObj->TRAF->TRAF_GRAD];
  496. pLn->StrokeColor = g_clrTraffic[pObj->TRAF->TRAF_GRAD];
  497. String sContent = "";
  498. sContent += "<font style=\"font-weight:bold;color:#0000FF\">" + pObj->LINK_ID + "</font><br>";
  499. sContent += pObj->ROAD_NAME + "<br>";
  500. sContent += ITSUtil_StrToTime(pObj->TRAF->PRCN_DT) + "<br>";
  501. sContent += String(pObj->TRAF->SPED) + " km/h<br>";
  502. sContent += String(pObj->TRAF->TRVL_HH) + " seconds<br>";
  503. sContent += sTrfGrade + " <br>";
  504. sContent += "<html:hidden [ROAD]" + pObj->ROAD_ID + " />";
  505. #if 0
  506. pLn->InfoWindow->DisableAutoPan = true;
  507. pLn->InfoWindow->HTMLContent = sContent;
  508. #endif
  509. }
  510. }
  511. __finally
  512. {
  513. ItsRoadManager->FLists.UnLock();
  514. }
  515. DebugList("InitGisTraffic - road end, " + String(pLink->Count));
  516. }
  517. //---------------------------------------------------------------------------
  518. void __fastcall TITS00MAP::RefreshMapTraffic()
  519. {
  520. if (!MapStart) return;
  521. #if 0
  522. LblTraffic->Visible = true;
  523. LblTraffic->Refresh();
  524. TmrLblTraffic->Enabled = true;
  525. #endif
  526. TGMPolyline *pLink = GMPolyLink;
  527. TPolyline *pLn = NULL;
  528. DebugList("RefreshMapTraffic - link start");
  529. pLink = GMPolyLink;
  530. try
  531. {
  532. ItsLinkManager->FLists.Lock();
  533. FOR_STL(TItsLink*, pObj, ItsLinkManager->FLists)
  534. {
  535. pLn = (TPolyline*)pObj->FPolyLine;
  536. if (!pLn) continue;
  537. String sTrfGrade = g_strTraffic[pObj->TRAF->TRAF_GRAD];
  538. pLn->StrokeColor = g_clrTraffic[pObj->TRAF->TRAF_GRAD];
  539. String sContent = "";
  540. sContent += "<font style=\"font-weight:bold;color:#0000FF\">" + pObj->LINK_ID + "</font><br>";
  541. sContent += pObj->ROAD_NAME + "<br>";
  542. sContent += ITSUtil_StrToTime(pObj->TRAF->PRCN_DT) + "<br>";
  543. sContent += String(pObj->TRAF->SPED) + " km/h<br>";
  544. sContent += String(pObj->TRAF->TRVL_HH) + " seconds<br>";
  545. sContent += sTrfGrade + " <br>";
  546. sContent += "<html:hidden [LINK]" + pObj->LINK_ID + " />";
  547. #if 0
  548. pLn->InfoWindow->DisableAutoPan = true;
  549. pLn->InfoWindow->HTMLContent = sContent;
  550. #endif
  551. }
  552. }
  553. __finally
  554. {
  555. ItsLinkManager->FLists.UnLock();
  556. }
  557. DebugList("RefreshMapTraffic - link end");
  558. DebugList("RefreshMapTraffic - ifsc start");
  559. pLink = GMPolyIfsc;
  560. try
  561. {
  562. ItsIfscManager->FLists.Lock();
  563. FOR_STL(TItsIfsc*, pObj, ItsIfscManager->FLists)
  564. {
  565. pLn = (TPolyline*)pObj->FPolyLine;
  566. if (!pLn) continue;
  567. String sTrfGrade = g_strTraffic[pObj->TRAF->TRAF_GRAD];
  568. pLn->StrokeColor = g_clrTraffic[pObj->TRAF->TRAF_GRAD];
  569. String sContent = "";
  570. sContent += "<font style=\"font-weight:bold;color:#0000FF\">" + pObj->LINK_ID + "</font><br>";
  571. sContent += pObj->IFSC_NM + "<br>";
  572. sContent += ITSUtil_StrToTime(pObj->TRAF->PRCN_DT) + "<br>";
  573. sContent += String(pObj->TRAF->SPED) + " km/h<br>";
  574. sContent += String(pObj->TRAF->TRVL_HH) + " seconds<br>";
  575. sContent += sTrfGrade + " <br>";
  576. sContent += "<html:hidden [IFSC]" + pObj->IFSC_ID + " />";
  577. #if 0
  578. pLn->InfoWindow->DisableAutoPan = true;
  579. pLn->InfoWindow->HTMLContent = sContent;
  580. #endif
  581. }
  582. }
  583. __finally
  584. {
  585. ItsIfscManager->FLists.UnLock();
  586. }
  587. DebugList("RefreshMapTraffic - ifsc end");
  588. DebugList("RefreshMapTraffic - road start");
  589. pLink = GMPolyRoad;
  590. try
  591. {
  592. ItsRoadManager->FLists.Lock();
  593. FOR_STL(TItsRoad*, pObj, ItsRoadManager->FLists)
  594. {
  595. pLn = (TPolyline*)pObj->FPolyLine;
  596. if (!pLn) continue;
  597. String sTrfGrade = g_strTraffic[pObj->TRAF->TRAF_GRAD];
  598. pLn->StrokeColor = g_clrTraffic[pObj->TRAF->TRAF_GRAD];
  599. String sContent = "";
  600. sContent += "<font style=\"font-weight:bold;color:#0000FF\">" + pObj->LINK_ID + "</font><br>";
  601. sContent += pObj->ROAD_NAME + "<br>";
  602. sContent += ITSUtil_StrToTime(pObj->TRAF->PRCN_DT) + "<br>";
  603. sContent += String(pObj->TRAF->SPED) + " km/h<br>";
  604. sContent += String(pObj->TRAF->TRVL_HH) + " seconds<br>";
  605. sContent += sTrfGrade + " <br>";
  606. sContent += "<html:hidden [ROAD]" + pObj->ROAD_ID + " />";
  607. #if 0
  608. pLn->InfoWindow->DisableAutoPan = true;
  609. pLn->InfoWindow->HTMLContent = sContent;
  610. #endif
  611. }
  612. }
  613. __finally
  614. {
  615. ItsRoadManager->FLists.UnLock();
  616. }
  617. DebugList("RefreshMapTraffic - road end");
  618. try
  619. {
  620. if (FrmLinkInfo)
  621. {
  622. FrmLinkInfo->RefreshLinkInfo();
  623. }
  624. }
  625. catch(...)
  626. {
  627. }
  628. }
  629. //---------------------------------------------------------------------------
  630. void __fastcall TITS00MAP::UpdateGisVms()
  631. {
  632. TGMMarker *pMarker = NULL;
  633. TMarker *pMk = NULL;
  634. pMarker = (TGMMarker*)GMMarkerVms;
  635. int nIcon;
  636. TItsFacility *pFacility;
  637. try
  638. {
  639. ItsFacilityManager->FVmsLists.Lock();
  640. FOR_STL(TItsVms *, pObj, ItsFacilityManager->FVmsLists)
  641. {
  642. if (pObj->DEL_YN == "Y") continue;
  643. pFacility = ItsFacilityManager->FLists.Find(pObj->VMS_CTLR_ID);
  644. if (!pFacility) continue;
  645. pMk = (TMarker*)pObj->FMarker;
  646. if (!pMk)
  647. {
  648. pMk = pMarker->Add(pObj->Y_CRDN.ToDouble(), pObj->X_CRDN.ToDouble(), pObj->VMS_CTLR_ID);
  649. if (!pMk) continue;
  650. pMk->Tag = (int)pObj;
  651. pMk->Title = pObj->VMS_CTLR_ID;
  652. pMk->MarkerType = mtStyledMarker;//mtStandard; //mtStyledMarker
  653. pMk->StyledMarker->StyledIcon = siMarker;
  654. //pMk->StyledMarker->StyledIcon = siBubble;
  655. pMk->StyledMarker->TextColor = clBlack;
  656. pMk->InfoWindow->DisableAutoPan = true;
  657. pMk->ShowInfoWinMouseOver = true;
  658. pMk->Visible = true;
  659. pMk->Clickable = true;
  660. pObj->FMarker = (void*)pMk;
  661. }
  662. if (!pMk) continue;
  663. nIcon = pFacility->FComm.ToIntDef(1);
  664. pMk->StyledMarker->StarColor = g_clrStatus[nIcon];
  665. pMk->StyledMarker->BackgroundColor = g_clrStatus[nIcon];
  666. String sSubType = pObj->VMS_USAG_TYPE_CD == "VUTN" ? "T" : "P";
  667. String sImgPath = g_AppCfg.vms.ICON[nIcon];
  668. sImgPath = StringReplace(sImgPath, ":\\", "://", TReplaceFlags() << rfReplaceAll);
  669. sImgPath = StringReplace(sImgPath, "\\", "/", TReplaceFlags() << rfReplaceAll);
  670. String sContent;
  671. //sContent += "<h4>" + pObj->VMS_NM + "</h4>";
  672. sContent += "<div style='width:105px; height:80px; float:left'>";
  673. sContent += "<img width='64' height='64' src='" + sImgPath + "' border='3' />";
  674. sContent += "</div>";
  675. sContent += "<div style='float:middle'>";
  676. sContent += "<font style='font-weight:bold;color:#0000FF'>" + pObj->VMS_NM + "</font><br>";
  677. sContent += pObj->VMS_CTLR_ID + " [" + pObj->VMS_CTLR_NMBR + "]<br><br>";
  678. if (pFacility->FComm != state_normal)
  679. sContent += "<font style='font-weight:bold;color:#FF0000'>" + g_strStatus[nIcon] + "</font><br>";
  680. else
  681. sContent += g_strStatus[nIcon] + "<br>";
  682. sContent += "</div>";
  683. sContent += "<html:hidden [VMS]" + pObj->VMS_CTLR_ID + " />";
  684. pMk->InfoWindow->HTMLContent = sContent;
  685. pMk->Icon = g_AppCfg.vms.ICON[nIcon];
  686. }
  687. }
  688. __finally
  689. {
  690. ItsFacilityManager->FVmsLists.UnLock();
  691. pMarker->Map = (ChkDrawVms->Visible && ChkDrawVms->Checked) ? GMMap1 : NULL;
  692. }
  693. }
  694. //---------------------------------------------------------------------------
  695. void __fastcall TITS00MAP::UpdateGisVds()
  696. {
  697. TGMMarker *pMarker = NULL;
  698. TMarker *pMk = NULL;
  699. pMarker = (TGMMarker*)GMMarkerVds;
  700. int nIcon;
  701. TItsFacility *pFacility;
  702. try
  703. {
  704. ItsFacilityManager->FVdsLists.Lock();
  705. FOR_STL(TItsVds *, pObj, ItsFacilityManager->FVdsLists)
  706. {
  707. if (pObj->DEL_YN == "Y") continue;
  708. pFacility = ItsFacilityManager->FLists.Find(pObj->VDS_CTLR_ID);
  709. if (!pFacility) continue;
  710. pMk = (TMarker*)pObj->FMarker;
  711. if (!pMk)
  712. {
  713. pMk = pMarker->Add(pObj->Y_CRDN.ToDouble(), pObj->X_CRDN.ToDouble(), pObj->VDS_CTLR_ID);
  714. if (!pMk) continue;
  715. pMk->Tag = (int)pObj;
  716. pMk->Title = pObj->VDS_CTLR_ID;
  717. pMk->MarkerType = mtStyledMarker;//mtStandard; //mtStyledMarker
  718. pMk->StyledMarker->StyledIcon = siMarker;
  719. //pMk->StyledMarker->StyledIcon = siBubble;
  720. pMk->StyledMarker->TextColor = clBlack;
  721. pMk->InfoWindow->DisableAutoPan = true;
  722. pMk->ShowInfoWinMouseOver = true;
  723. pMk->Visible = true;
  724. pMk->Clickable = true;
  725. pObj->FMarker = (void*)pMk;
  726. }
  727. if (!pMk) continue;
  728. nIcon = pFacility->FComm.ToIntDef(1);
  729. pMk->StyledMarker->StarColor = g_clrStatus[nIcon];
  730. pMk->StyledMarker->BackgroundColor = g_clrStatus[nIcon];
  731. String sImgPath = g_AppCfg.vds.ICON[nIcon];
  732. sImgPath = StringReplace(sImgPath, ":\\", "://", TReplaceFlags() << rfReplaceAll);
  733. sImgPath = StringReplace(sImgPath, "\\", "/", TReplaceFlags() << rfReplaceAll);
  734. String sContent;
  735. //sContent += "<h4>" + pObj->VMS_NM + "</h4>";
  736. sContent += "<div style='width:105px; height:80px; float:left'>";
  737. sContent += "<img width='64' height='64' src='" + sImgPath + "' border='3' />";
  738. sContent += "</div>";
  739. sContent += "<div style='float:middle'>";
  740. sContent += "<font style='font-weight:bold;color:#0000FF'>" + pObj->LCTN + "</font><br>";
  741. sContent += pObj->VDS_CTLR_ID + " [" + pObj->CTLR_MNGM_NMBR + "]<br><br>";
  742. if (pFacility->FComm != state_normal)
  743. sContent += "<font style='font-weight:bold;color:#FF0000'>" + g_strStatus[nIcon] + "</font><br>";
  744. else
  745. sContent += g_strStatus[nIcon] + "<br>";
  746. sContent += "</div>";
  747. sContent += "<html:hidden [VDS]" + pObj->VDS_CTLR_ID + " />";
  748. pMk->InfoWindow->HTMLContent = sContent;
  749. pMk->Icon = g_AppCfg.vds.ICON[nIcon];
  750. }
  751. }
  752. __finally
  753. {
  754. ItsFacilityManager->FVdsLists.UnLock();
  755. pMarker->Map = (ChkDrawVds->Visible && ChkDrawVds->Checked) ? GMMap1 : NULL;
  756. }
  757. }
  758. //---------------------------------------------------------------------------
  759. void __fastcall TITS00MAP::UpdateGisIncident()
  760. {
  761. TGMMarker *pMarker = NULL;
  762. TMarker *pMk = NULL;
  763. pMarker = (TGMMarker*)GMMarkerAcc;
  764. RemoveMarker(pMarker);
  765. int nStatus;
  766. try
  767. {
  768. ItsIncidentManager->FLists.Lock();
  769. FOR_STL(TItsIncident *, pObj, ItsIncidentManager->FLists)
  770. {
  771. if (pObj->DISP_INCD == "N") continue;
  772. if (pObj->INCD_PRGR_STEP_CD == "ISS2")
  773. {
  774. pMk = pMarker->Add(pObj->Y_CRDN.ToDouble(), pObj->X_CRDN.ToDouble(), pObj->INCD_OCRR_ID);
  775. if (!pMk) continue;
  776. pMk->Tag = (int)pObj;
  777. pMk->Title = pObj->INCD_TITL;
  778. pMk->MarkerType = mtStandard; //mtStyledMarker
  779. nStatus = pObj->INCD_TYPE_CLSF_CD.ToIntDef(1);
  780. if (nStatus > 4 || nStatus < 1) nStatus = 1;
  781. //돌발유형이 사고,기상인 경우는 돌발종료시각을 표출하지 않도록 함. 돌발유형이 공사,행사인 경우만 돌발종료시각 표출함
  782. String sContent = "";
  783. sContent += "<font style=\"font-weight:bold;color:#0000FF\">" + pObj->INCD_OCRR_ID + "</font><br>";
  784. sContent += pObj->INCD_TITL + "<br>";
  785. sContent += g_strIncident[nStatus] + "<br>"; // 돌발구분
  786. sContent += ITSUtil_StrToTime(pObj->RGST_DT) + "<br>"; // 돌발등록시각
  787. sContent += ITSUtil_StrToTime(pObj->FINCD_STRT_DT) + "<br>"; // 돌발시작시각
  788. if (nStatus == 2 || nStatus == 3)
  789. {
  790. sContent += ITSUtil_StrToTime(pObj->INCD_END_PRAR_DT) + "<br>"; // 돌발종료시각
  791. }
  792. sContent += "<html:hidden [INCIDENT]" + pObj->INCD_OCRR_ID + " />";
  793. pMk->InfoWindow->DisableAutoPan = true;
  794. pMk->InfoWindow->HTMLContent = sContent;
  795. pMk->ShowInfoWinMouseOver = true;
  796. pMk->Icon = g_sImageDir + "Incident\\Incident" + String(nStatus) + ".png";
  797. pMk->Visible = true;
  798. pMk->Clickable = true;
  799. pObj->FMarker = (void*)pMk;
  800. }
  801. }
  802. }
  803. __finally
  804. {
  805. ItsIncidentManager->FLists.UnLock();
  806. pMarker->Map = (ChkDrawIncident->Visible && ChkDrawIncident->Checked) ? GMMap1 : NULL;
  807. }
  808. }
  809. //---------------------------------------------------------------------------
  810. void __fastcall TITS00MAP::GetGisTrafficColor(TUTISLinkGrade &pUtisLinkColor)
  811. {
  812. //TJobTick job("GetGisTrafficColor");
  813. // 고속도로
  814. pUtisLinkColor.road101.GDLOW.SpdCOLOR = clRed;
  815. pUtisLinkColor.road101.GDLOW.MinSpeed = 0;
  816. pUtisLinkColor.road101.GDLOW.MaxSpeed = 30;
  817. pUtisLinkColor.road101.GDMID.SpdCOLOR = clYellow;
  818. pUtisLinkColor.road101.GDMID.MinSpeed = 31;
  819. pUtisLinkColor.road101.GDMID.MaxSpeed = 70;
  820. pUtisLinkColor.road101.GDHIG.SpdCOLOR = clLime;
  821. pUtisLinkColor.road101.GDHIG.MinSpeed = 71;
  822. pUtisLinkColor.road101.GDHIG.MaxSpeed = 255;
  823. // 자동차전용도로
  824. pUtisLinkColor.road102.GDLOW.SpdCOLOR = clRed;
  825. pUtisLinkColor.road102.GDLOW.MinSpeed = 0;
  826. pUtisLinkColor.road102.GDLOW.MaxSpeed = 30;
  827. pUtisLinkColor.road102.GDMID.SpdCOLOR = clYellow;
  828. pUtisLinkColor.road102.GDMID.MinSpeed = 31;
  829. pUtisLinkColor.road102.GDMID.MaxSpeed = 50;
  830. pUtisLinkColor.road102.GDHIG.SpdCOLOR = clLime;
  831. pUtisLinkColor.road102.GDHIG.MinSpeed = 51;
  832. pUtisLinkColor.road102.GDHIG.MaxSpeed = 255;
  833. // 일반국도
  834. pUtisLinkColor.road103.GDLOW.SpdCOLOR = clRed;
  835. pUtisLinkColor.road103.GDLOW.MinSpeed = 0;
  836. pUtisLinkColor.road103.GDLOW.MaxSpeed = 10;
  837. pUtisLinkColor.road103.GDMID.SpdCOLOR = clYellow;
  838. pUtisLinkColor.road103.GDMID.MinSpeed = 11;
  839. pUtisLinkColor.road103.GDMID.MaxSpeed = 20;
  840. pUtisLinkColor.road103.GDHIG.SpdCOLOR = clLime;
  841. pUtisLinkColor.road103.GDHIG.MinSpeed = 21;
  842. pUtisLinkColor.road103.GDHIG.MaxSpeed = 255;
  843. // 특별, 광역시도
  844. pUtisLinkColor.road104.GDLOW.SpdCOLOR = clRed;
  845. pUtisLinkColor.road104.GDLOW.MinSpeed = 0;
  846. pUtisLinkColor.road104.GDLOW.MaxSpeed = 10;
  847. pUtisLinkColor.road104.GDMID.SpdCOLOR = clYellow;
  848. pUtisLinkColor.road104.GDMID.MinSpeed = 11;
  849. pUtisLinkColor.road104.GDMID.MaxSpeed = 20;
  850. pUtisLinkColor.road104.GDHIG.SpdCOLOR = clLime;
  851. pUtisLinkColor.road104.GDHIG.MinSpeed = 21;
  852. pUtisLinkColor.road104.GDHIG.MaxSpeed = 255;
  853. // 국가지원지방도
  854. pUtisLinkColor.road105.GDLOW.SpdCOLOR = clRed;
  855. pUtisLinkColor.road105.GDLOW.MinSpeed = 0;
  856. pUtisLinkColor.road105.GDLOW.MaxSpeed = 10;
  857. pUtisLinkColor.road105.GDMID.SpdCOLOR = clYellow;
  858. pUtisLinkColor.road105.GDMID.MinSpeed = 11;
  859. pUtisLinkColor.road105.GDMID.MaxSpeed = 20;
  860. pUtisLinkColor.road105.GDHIG.SpdCOLOR = clLime;
  861. pUtisLinkColor.road105.GDHIG.MinSpeed = 21;
  862. pUtisLinkColor.road105.GDHIG.MaxSpeed = 255;
  863. // 지방도
  864. pUtisLinkColor.road106.GDLOW.SpdCOLOR = clRed;
  865. pUtisLinkColor.road106.GDLOW.MinSpeed = 0;
  866. pUtisLinkColor.road106.GDLOW.MaxSpeed = 10;
  867. pUtisLinkColor.road106.GDMID.SpdCOLOR = clYellow;
  868. pUtisLinkColor.road106.GDMID.MinSpeed = 11;
  869. pUtisLinkColor.road106.GDMID.MaxSpeed = 20;
  870. pUtisLinkColor.road106.GDHIG.SpdCOLOR = clLime;
  871. pUtisLinkColor.road106.GDHIG.MinSpeed = 21;
  872. pUtisLinkColor.road106.GDHIG.MaxSpeed = 255;
  873. // 시군도
  874. pUtisLinkColor.road107.GDLOW.SpdCOLOR = clRed;
  875. pUtisLinkColor.road107.GDLOW.MinSpeed = 0;
  876. pUtisLinkColor.road107.GDLOW.MaxSpeed = 10;
  877. pUtisLinkColor.road107.GDMID.SpdCOLOR = clYellow;
  878. pUtisLinkColor.road107.GDMID.MinSpeed = 11;
  879. pUtisLinkColor.road107.GDMID.MaxSpeed = 20;
  880. pUtisLinkColor.road107.GDHIG.SpdCOLOR = clLime;
  881. pUtisLinkColor.road107.GDHIG.MinSpeed = 21;
  882. pUtisLinkColor.road107.GDHIG.MaxSpeed = 255;
  883. TDBLinkColor *pLinkColor = NULL;
  884. TLinkTrfGrd *pTrgGrd = NULL;
  885. FOR_STL(TItsTrafficGrade *, pGrade, ItsTrafficGradeManager->FLists)
  886. {
  887. FOR_STL(TItsTrafficSubGrade *, pSubGrade, pGrade->FSubLists)
  888. {
  889. if (pGrade->SECT_GRAD_CD == "SRT1") //101.고속국도
  890. pLinkColor = &pUtisLinkColor.road101;
  891. else
  892. if (pGrade->SECT_GRAD_CD == "SRT2") //102.도시고속국도
  893. pLinkColor = &pUtisLinkColor.road102;
  894. else
  895. if (pGrade->SECT_GRAD_CD == "SRT3") //103.일반국도
  896. pLinkColor = &pUtisLinkColor.road103;
  897. else
  898. if (pGrade->SECT_GRAD_CD == "SRT4") //104.특별·광역시도
  899. pLinkColor = &pUtisLinkColor.road104;
  900. else
  901. if (pGrade->SECT_GRAD_CD == "SRT5") //105.국가지원지방도
  902. pLinkColor = &pUtisLinkColor.road105;
  903. else
  904. if (pGrade->SECT_GRAD_CD == "SRT6") //106.지방도
  905. pLinkColor = &pUtisLinkColor.road106;
  906. else
  907. if (pGrade->SECT_GRAD_CD == "SRT7") //107.시·군도
  908. pLinkColor = &pUtisLinkColor.road107;
  909. else
  910. continue;
  911. TColor trfColor;
  912. if (pSubGrade->CMTR_GRAD_CD == "LTC1")
  913. {
  914. pTrgGrd = &pLinkColor->GDHIG;
  915. trfColor = clLime;
  916. }
  917. else
  918. if (pSubGrade->CMTR_GRAD_CD == "LTC2")
  919. {
  920. pTrgGrd = &pLinkColor->GDMID;
  921. trfColor = clYellow;
  922. }
  923. else
  924. if (pSubGrade->CMTR_GRAD_CD == "LTC3")
  925. {
  926. pTrgGrd = &pLinkColor->GDLOW;
  927. trfColor = clRed;
  928. }
  929. else
  930. continue;
  931. pTrgGrd->SpdCOLOR = trfColor;
  932. if (pSubGrade->CMTR_GRAD_CD == "LTC3")
  933. pTrgGrd->MinSpeed = 0;
  934. else
  935. pTrgGrd->MinSpeed = StrToInt(pSubGrade->LWST_TRVL_SPED);
  936. pTrgGrd->MaxSpeed = StrToInt(pSubGrade->HGHS_TRVL_SPED);
  937. }
  938. }
  939. }
  940. //---------------------------------------------------------------------------
  941. void __fastcall TITS00MAP::SetGisTrafficColor()
  942. {
  943. #if 0
  944. //TODO
  945. //소통등급별 색상을 플래시로 던지는 것을 여기에 추가한다.
  946. TUTISLinkGrade UtisLinkColor;
  947. GetGisTrafficColor(UtisLinkColor);
  948. // 소통정보를 표출할 스레드 생성
  949. for (int ii = 0; ii < MAX_LAYERS; ii++)
  950. {
  951. if (m_pLinkSpeedUpdate[ii] == NULL) continue;
  952. m_pLinkSpeedUpdate[ii]->SetUTISLinkColor(UtisLinkColor);
  953. }
  954. #endif
  955. }
  956. //---------------------------------------------------------------------------
  957. void __fastcall TITS00MAP::TmrRefreshTimer(TObject *Sender)
  958. {
  959. //TmrRefresh->Enabled = false;
  960. //ImgRefresh->Enabled = true;
  961. }
  962. //---------------------------------------------------------------------------
  963. void __fastcall TITS00MAP::TmrSelectTimer(TObject *Sender)
  964. {
  965. TmrSelect->Enabled = false;
  966. TMarker *pMarker = GMMarkerPos->Items[0];
  967. if (pMarker == NULL)
  968. pMarker = GMMarkerPos->Items[0];
  969. if (pMarker)
  970. {
  971. pMarker->Visible = false;
  972. }
  973. }
  974. //---------------------------------------------------------------------------
  975. void __fastcall TITS00MAP::SelectObjectByPos(double dPosX, double dPosY, bool bArrow/*=false*/)
  976. {
  977. m_ptSelect.X = dPosX;
  978. m_ptSelect.Y = dPosY;
  979. if (!MapStart) return;
  980. TMarker *pMarker = GMMarkerPos->Items[0];
  981. if (pMarker == NULL)
  982. pMarker = GMMarkerPos->Items[0];
  983. if (!pMarker) return;
  984. TmrSelect->Enabled = false;
  985. pMarker->Visible = false;
  986. pMarker->Position->Lat = dPosY; // dLat;
  987. pMarker->Position->Lng = dPosX; // dLng;
  988. pMarker->CenterMapTo();
  989. pMarker->CenterMapToMarker();
  990. pMarker->Animation->OnDrop = false;
  991. pMarker->Animation->OnDrop = true;
  992. pMarker->Visible = true;
  993. TmrSelect->Enabled = true;
  994. }
  995. //---------------------------------------------------------------------------
  996. void __fastcall TITS00MAP::TmrLinkSelectTimer(TObject *Sender)
  997. {
  998. TmrLinkSelect->Enabled = false;
  999. GMPolySelect->Map = NULL;
  1000. if (FSelLink)
  1001. {
  1002. FSelLink->StrokeColor = FSelColor;
  1003. //FSelLink->Visible = false;
  1004. }
  1005. FSelLink = NULL;
  1006. }
  1007. //---------------------------------------------------------------------------
  1008. bool __fastcall TITS00MAP::SelectLinkById(int ALinkLevel, String AId, bool AHide/*=false*/)
  1009. {
  1010. try
  1011. {
  1012. if (!MapStart) return false;
  1013. if (FMapLinkLevel != ALinkLevel)
  1014. {
  1015. int nZoomLevel = MAP_ZOOM_LINK;
  1016. if (ALinkLevel == 2)
  1017. {
  1018. nZoomLevel = MAP_ZOOM_IFSC;
  1019. }
  1020. else
  1021. if (ALinkLevel == 3)
  1022. {
  1023. nZoomLevel = MAP_ZOOM_ROAD;
  1024. }
  1025. Application->ProcessMessages();
  1026. //GMMap1->RequiredProp->Zoom = nZoomLevel;
  1027. Application->ProcessMessages();
  1028. }
  1029. TmrLinkSelectTimer(NULL);
  1030. TPolyline* pLn = NULL;
  1031. if (ALinkLevel == 1)
  1032. {
  1033. TItsLink* pObj = ItsLinkManager->FLists.Find(AId);
  1034. if (pObj) pLn = (TPolyline*)pObj->FPolyLine;
  1035. }
  1036. else
  1037. if (ALinkLevel == 2)
  1038. {
  1039. TItsIfsc* pObj = ItsIfscManager->FLists.Find(AId);
  1040. if (pObj) pLn = (TPolyline*)pObj->FPolyLine;
  1041. }
  1042. else
  1043. if (ALinkLevel == 3)
  1044. {
  1045. TItsRoad* pObj = ItsRoadManager->FLists.Find(AId);
  1046. if (pObj) pLn = (TPolyline*)pObj->FPolyLine;
  1047. }
  1048. if (pLn)
  1049. {
  1050. #if 0
  1051. FSelLink = pLn;
  1052. FSelColor= pLn->StrokeColor;
  1053. pLn->StrokeColor = clGreen;
  1054. if (!pLn->Visible)
  1055. {
  1056. pLn->Visible = true;
  1057. }
  1058. //pLn->CenterMapTo();
  1059. pLn->ZoomToPoints();
  1060. #else
  1061. #if 0
  1062. FSelLink->ClearLinePoints();
  1063. for (int ii = 0; ii < pLn->CountLinePoints; ii++)
  1064. {
  1065. FSelLink->AddLinePoint(pLn->Items[ii]->Lat, pLn->Items[ii]->Lng);
  1066. }
  1067. FSelLink->Visible = true;
  1068. #else
  1069. int nObjs = GMPolySelect->Count;
  1070. for (int ii = nObjs - 1; ii >= 0; ii--)
  1071. {
  1072. GMPolySelect->Items[ii]->Visible = false;
  1073. GMPolySelect->Delete(ii);
  1074. }
  1075. GMPolySelect->Clear();
  1076. FSelLink = GMPolySelect->Add();
  1077. if (!FSelLink) return false;
  1078. FSelLink->Text = AId;
  1079. for (int ii = 0; ii < pLn->CountLinePoints; ii++)
  1080. {
  1081. FSelLink->AddLinePoint(pLn->Items[ii]->Lat, pLn->Items[ii]->Lng);
  1082. }
  1083. FSelLink->DisplayName = AId;
  1084. FSelLink->StrokeWeight = 16;
  1085. FSelLink->StrokeOpacity = 1;
  1086. FSelLink->AutoUpdatePath = true;
  1087. FSelLink->Visible = true;
  1088. FSelLink->Clickable = true;
  1089. FSelLink->StrokeColor = clGreen;
  1090. #endif
  1091. GMPolySelect->Map = GMMap1;
  1092. FSelLink->ZoomToPoints();
  1093. #endif
  1094. DebugList("SelectLinkById");
  1095. TmrLinkSelect->Enabled = true;
  1096. }
  1097. }
  1098. catch(Exception& e)
  1099. {
  1100. }
  1101. return true;
  1102. }
  1103. //---------------------------------------------------------------------------
  1104. void __fastcall TITS00MAP::ChkDrawGisClick(TObject *Sender)
  1105. {
  1106. ShowHideFacility(Sender);
  1107. WebBrowser1->SetFocus();
  1108. }
  1109. //---------------------------------------------------------------------------
  1110. void __fastcall TITS00MAP::ShowHideFacility(TObject *Sender)
  1111. {
  1112. if (!MapStart) return;
  1113. TcxCheckBox *pCheck = (TcxCheckBox*)Sender;
  1114. switch(pCheck->Tag)
  1115. {
  1116. case 1: GMMarkerVms->Map = (pCheck->Checked) ? GMMap1 : NULL; break; // VMS
  1117. case 2: GMMarkerVds->Map = (pCheck->Checked) ? GMMap1 : NULL; break; // VDS
  1118. case 77:
  1119. {
  1120. if (pCheck->Checked)
  1121. {
  1122. ShowHideTraffic();
  1123. }
  1124. else
  1125. {
  1126. GMPolyLink->Map = NULL;
  1127. GMPolyIfsc->Map = NULL;
  1128. GMPolyRoad->Map = NULL;
  1129. }
  1130. }
  1131. break;
  1132. case 88: GMMarkerAcc->Map = (pCheck->Checked) ? GMMap1 : NULL; break; // 돌발
  1133. case 99: GMPolygonRgn->Map = (pCheck->Checked) ? GMMap1 : NULL; break; // 시경계
  1134. }
  1135. }
  1136. //---------------------------------------------------------------------------
  1137. void __fastcall TITS00MAP::ShowHideTraffic()
  1138. {
  1139. DebugList("ShowHideTraffic - start");
  1140. Application->ProcessMessages();
  1141. if (!MapStart) return;
  1142. if (ChkTrafficLayer->Checked == false)
  1143. {
  1144. return;
  1145. }
  1146. if (FMapZoom <= 0) return;
  1147. LblTraffic->Visible = true;
  1148. Application->ProcessMessages();
  1149. TGMPolyline* pOldLink = NULL;
  1150. TGMPolyline* pNewLink = NULL;
  1151. if (GMPolyLink->Map) pOldLink = GMPolyLink;
  1152. else
  1153. if (GMPolyIfsc->Map) pOldLink = GMPolyIfsc;
  1154. else
  1155. if (GMPolyRoad->Map) pOldLink = GMPolyRoad;
  1156. if (FMapZoom <= MAP_ZOOM_MAX_ROAD) pNewLink = GMPolyRoad;
  1157. else
  1158. if (FMapZoom >= MAP_ZOOM_MIN_LINK) pNewLink = GMPolyLink;
  1159. else pNewLink = GMPolyIfsc;
  1160. if (pOldLink != pNewLink)
  1161. {
  1162. DebugList("ShowHideTraffic - change Link - start");
  1163. if (pOldLink && pOldLink->Map)
  1164. {
  1165. DebugList("ShowHideTraffic - change Link - clear start");
  1166. pOldLink->Map = NULL;
  1167. DebugList("ShowHideTraffic - change Link - clear end");
  1168. }
  1169. //ShowHideLink(pNewLink);
  1170. if (pNewLink && !pNewLink->Map)
  1171. {
  1172. DebugList("ShowHideTraffic - change Link - map start");
  1173. pNewLink->Map = GMMap1;
  1174. DebugList("ShowHideTraffic - change Link - map end");
  1175. }
  1176. DebugList("ShowHideTraffic - change Link - end");
  1177. }
  1178. else
  1179. {
  1180. DebugList("ShowHideTraffic - equal Link - start");
  1181. //ShowHideLink(pNewLink);
  1182. if (pNewLink && !pNewLink->Map)
  1183. {
  1184. DebugList("ShowHideTraffic - equal Link - map start");
  1185. pNewLink->Map = GMMap1;
  1186. DebugList("ShowHideTraffic - equal Link - map end");
  1187. }
  1188. DebugList("ShowHideTraffic - equal Link - end");
  1189. }
  1190. LblTraffic->Visible = false;
  1191. Application->ProcessMessages();
  1192. DebugList("ShowHideTraffic - end");
  1193. }
  1194. //---------------------------------------------------------------------------
  1195. void __fastcall TITS00MAP::ShowHideLink(TGMPolyline* APoly)
  1196. {
  1197. if (!GMMap1->Active) return;
  1198. if (!APoly) return;
  1199. DebugList("ShowHideLink - start, " + String(APoly->Count));
  1200. int nTrue = 0;
  1201. int nFalse= 0;
  1202. try
  1203. {
  1204. APoly->Map = NULL;
  1205. int nPolylines = APoly->Count;
  1206. for (int ii = nPolylines - 1; ii >= 0; ii--)
  1207. {
  1208. TPolyline *pTmpLine = APoly->Items[ii];
  1209. TItsBounds* pBounds = (TItsBounds*)pTmpLine->FObject;
  1210. FMinLatLng->Lat = pBounds->minY;
  1211. FMinLatLng->Lng = pBounds->minX;
  1212. FMaxLatLng->Lat = pBounds->maxY;
  1213. FMaxLatLng->Lng = pBounds->maxX;
  1214. if (GMMap1->LatLngBoundsContains(FMinLatLng, FMapBounds) || GMMap1->LatLngBoundsContains(FMaxLatLng, FMapBounds))
  1215. //if (GMMap1->MapLatLngBoundsContains(FMinLatLng) || GMMap1->MapLatLngBoundsContains(FMaxLatLng))
  1216. {
  1217. nTrue++;
  1218. pTmpLine->Visible = true;
  1219. }
  1220. else
  1221. {
  1222. nFalse++;
  1223. pTmpLine->Visible = false;
  1224. }
  1225. }
  1226. }
  1227. __finally
  1228. {
  1229. APoly->Map = GMMap1;
  1230. }
  1231. DebugList("ShowHideLink - end, " + String(APoly->Count) + ", " + String(nTrue) + ", " + String(nFalse));
  1232. }
  1233. //---------------------------------------------------------------------------
  1234. void __fastcall TITS00MAP::ShowLinkDetailInfo(String sLinkId, int nLinkLevel)
  1235. {
  1236. try
  1237. {
  1238. if (FrmLinkInfo == NULL)
  1239. {
  1240. FrmLinkInfo = new TFrmLinkInfo(Application);
  1241. }
  1242. FrmLinkInfo->Show();
  1243. FrmLinkInfo->ShowLinkInfo(sLinkId, nLinkLevel);
  1244. }
  1245. catch(...)
  1246. {
  1247. }
  1248. }
  1249. //---------------------------------------------------------------------------
  1250. void __fastcall TITS00MAP::ChkGisSearchClick(TObject *Sender)
  1251. {
  1252. try
  1253. {
  1254. if (ChkGisSearch->Checked)
  1255. {
  1256. if (FrmGisSearch == NULL)
  1257. {
  1258. FrmGisSearch = new TFrmGisSearch(this);
  1259. //FrmGisSearch->Parent = this;
  1260. }
  1261. FrmGisSearch->Show();
  1262. }
  1263. else
  1264. {
  1265. if (FrmGisSearch)
  1266. {
  1267. if (FrmGisSearch->m_bClose == false)
  1268. {
  1269. FrmGisSearch->Close();
  1270. }
  1271. }
  1272. }
  1273. }
  1274. catch(...)
  1275. {
  1276. }
  1277. }
  1278. //---------------------------------------------------------------------------
  1279. void __fastcall TITS00MAP::FormClose(TObject *Sender, TCloseAction &Action)
  1280. {
  1281. CommClose();
  1282. //ITS00MAP = NULL;
  1283. Action = caFree;
  1284. }
  1285. //---------------------------------------------------------------------------
  1286. void __fastcall TITS00MAP::panRemarkMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
  1287. {
  1288. TcxGroupBox *pGroup = (TcxGroupBox*)Sender;
  1289. ReleaseCapture();
  1290. pGroup->Perform(WM_SYSCOMMAND, 0xf012, 0);
  1291. }
  1292. //---------------------------------------------------------------------------
  1293. void __fastcall TITS00MAP::ChkViewExamplePropertiesChange(TObject *Sender)
  1294. {
  1295. panRemark->Visible = ChkViewExample->Checked;
  1296. }
  1297. //---------------------------------------------------------------------------
  1298. /*
  1299. * 시설물의 상태에 따라 이미지를 전자지도에 표출한다.(XiClient->CCTVIconList)
  1300. * arguments
  1301. *
  1302. * return
  1303. * void
  1304. */
  1305. void __fastcall TITS00MAP::UpdateFacilityStatus()
  1306. {
  1307. UpdateGisVms();
  1308. UpdateGisVds();
  1309. #if 0
  1310. String sFacility;
  1311. String sShowIcon;
  1312. String sShowInfo;
  1313. String sObjList;
  1314. String sStatus;
  1315. TItsFacility *pFacility;
  1316. sStatus = "0";
  1317. #ifdef USE_CCTV
  1318. sObjList = "";
  1319. try
  1320. {
  1321. ItsFacilityManager->FCctvLists.Lock();
  1322. FOR_STL(TItsCctv *, pObj, ItsFacilityManager->FCctvLists)
  1323. {
  1324. if (pObj->DEL_YN == "Y") continue;
  1325. //if (pObj->LOCAL_YN != "Y") continue; //지역CCTV정보만 위치에 표출
  1326. pFacility = ItsFacilityManager->FLists.Find(pObj->CCTV_CTLR_ID);
  1327. if (!pFacility) continue;
  1328. sStatus = pFacility->FComm;
  1329. String sLoc = pObj->ISTL_LCTN_NM;
  1330. sObjList += (pObj->CCTV_CTLR_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->CCTV_CTLR_ID + ",0,|");
  1331. }
  1332. }
  1333. __finally
  1334. {
  1335. ItsFacilityManager->FCctvLists.UnLock();
  1336. sFacility = FAC_CCTV;
  1337. sShowIcon = ChkDrawCtv->Checked ? "1" : "0";
  1338. sShowInfo = "0";
  1339. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1340. if (sObjList != "")
  1341. {
  1342. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1343. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1344. }
  1345. }
  1346. #endif
  1347. #ifdef USE_VMS
  1348. sObjList = "";
  1349. try
  1350. {
  1351. ItsFacilityManager->FVmsLists.Lock();
  1352. FOR_STL(TItsVms *, pObj, ItsFacilityManager->FVmsLists)
  1353. {
  1354. if (pObj->DEL_YN == "Y") continue;
  1355. pFacility = ItsFacilityManager->FLists.Find(pObj->VMS_CTLR_ID);
  1356. if (!pFacility) continue;
  1357. sStatus = pFacility->FComm;
  1358. String sSubType = pObj->VMS_USAG_TYPE_CD == "VUTN" ? "T" : "P";
  1359. String sLoc = pObj->VMS_NM;
  1360. sObjList += (pObj->VMS_CTLR_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->VMS_CTLR_ID + "," + sSubType + "|");
  1361. }
  1362. }
  1363. __finally
  1364. {
  1365. ItsFacilityManager->FVmsLists.UnLock();
  1366. sFacility = FAC_VMS;
  1367. sShowIcon = ChkDrawVms->Checked ? "1" : "0";
  1368. sShowInfo = "0";
  1369. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1370. if (sObjList != "")
  1371. {
  1372. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1373. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1374. }
  1375. }
  1376. #endif
  1377. #ifdef USE_RSE
  1378. sObjList = "";
  1379. try
  1380. {
  1381. ItsFacilityManager->FRseLists.Lock();
  1382. FOR_STL(TItsRse *, pObj, ItsFacilityManager->FRseLists)
  1383. {
  1384. //if (pObj->DEL_YN == "Y") continue;
  1385. pFacility = ItsFacilityManager->FLists.Find(pObj->RSEID);
  1386. if (!pFacility) continue;
  1387. sStatus = pFacility->FComm;
  1388. if (sStatus == "2") sStatus = "1";
  1389. String sLoc = pObj->LOCATION;
  1390. sObjList += (pObj->RSEID + "," + sStatus + "," + sLoc + "," + pObj->COORDX + "," + pObj->COORDY + "," + pObj->RSEID + ",0,|");
  1391. }
  1392. }
  1393. __finally
  1394. {
  1395. ItsFacilityManager->FRseLists.UnLock();
  1396. sFacility = FAC_RSE;
  1397. sShowIcon = ChkDrawRse->Checked ? "1" : "0";
  1398. sShowInfo = "0";
  1399. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1400. if (sObjList != "")
  1401. {
  1402. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1403. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1404. }
  1405. }
  1406. #endif
  1407. #ifdef USE_WCAM
  1408. sObjList = "";
  1409. try
  1410. {
  1411. ItsFacilityManager->FWebCamLists.Lock();
  1412. FOR_STL(TItsWebCam *, pObj, ItsFacilityManager->FWebCamLists)
  1413. {
  1414. //if (pObj->DEL_YN == "Y") continue;
  1415. pFacility = ItsFacilityManager->FLists.Find(pObj->WEB_CMRA_ID);
  1416. if (!pFacility) continue;
  1417. sStatus = pFacility->FComm;
  1418. if (sStatus == "2") sStatus = "1";
  1419. String sLoc = pObj->ISTL_LCTN_NM;
  1420. sObjList += (pObj->WEB_CMRA_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->WEB_CMRA_ID + ",0,|");
  1421. }
  1422. }
  1423. __finally
  1424. {
  1425. ItsFacilityManager->FWebCamLists.UnLock();
  1426. sFacility = FAC_WCAM;
  1427. sShowIcon = ChkWebCam->Checked ? "1" : "0";
  1428. sShowInfo = "0";
  1429. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1430. if (sObjList != "")
  1431. {
  1432. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1433. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1434. }
  1435. }
  1436. #endif
  1437. #ifdef USE_VDS
  1438. sObjList = "";
  1439. try
  1440. {
  1441. ItsFacilityManager->FVdsLists.Lock();
  1442. FOR_STL(TItsVds *, pObj, ItsFacilityManager->FVdsLists)
  1443. {
  1444. if (pObj->DEL_YN == "Y") continue;
  1445. pFacility = ItsFacilityManager->FLists.Find(pObj->VDS_CTLR_ID);//CTLR_MNGM_NMBR);
  1446. if (!pFacility) continue;
  1447. sStatus = pFacility->FComm;
  1448. String sLoc = pObj->LCTN;
  1449. sObjList += (pObj->VDS_CTLR_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->VDS_CTLR_ID + ",0,|");
  1450. }
  1451. }
  1452. __finally
  1453. {
  1454. ItsFacilityManager->FVdsLists.UnLock();
  1455. sFacility = FAC_VDS;
  1456. sShowIcon = ChkDrawVds->Checked ? "1" : "0";
  1457. sShowInfo = "0";
  1458. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1459. if (sObjList != "")
  1460. {
  1461. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1462. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1463. }
  1464. }
  1465. #endif
  1466. #ifdef USE_AVI
  1467. sObjList = "";
  1468. try
  1469. {
  1470. ItsFacilityManager->FAviLists.Lock();
  1471. FOR_STL(TItsAvi *, pObj, ItsFacilityManager->FAviLists)
  1472. {
  1473. if (pObj->DEL_YN == "Y") continue;
  1474. pFacility = ItsFacilityManager->FLists.Find(pObj->AVI_ID);
  1475. if (!pFacility) continue;
  1476. sStatus = pFacility->FComm;
  1477. String sLoc = pObj->AVI_LCTN_NM;
  1478. sObjList += (pObj->AVI_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->AVI_ID + ",0,|");
  1479. }
  1480. }
  1481. __finally
  1482. {
  1483. ItsFacilityManager->FAviLists.UnLock();
  1484. sFacility = FAC_AVI;
  1485. sShowIcon = ChkDrawAvi->Checked ? "1" : "0";
  1486. sShowInfo = "0";
  1487. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1488. if (sObjList != "")
  1489. {
  1490. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1491. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1492. }
  1493. }
  1494. #endif
  1495. #ifdef USE_DSRC
  1496. sObjList = "";
  1497. try
  1498. {
  1499. ItsFacilityManager->FDsrcLists.Lock();
  1500. FOR_STL(TItsDsrc *, pObj, ItsFacilityManager->FDsrcLists)
  1501. {
  1502. if (pObj->DEL_YN == "Y") continue;
  1503. pFacility = ItsFacilityManager->FLists.Find(pObj->RSE_ID);
  1504. if (!pFacility) continue;
  1505. sStatus = pFacility->FComm;
  1506. String sLoc = pObj->ISTL_LCTN_NM;
  1507. sObjList += (pObj->RSE_ID + "," + sStatus + "," + sLoc + "," + pObj->LCTN_X + "," + pObj->LCTN_Y + "," + pObj->RSE_ID + ",0,|");
  1508. }
  1509. }
  1510. __finally
  1511. {
  1512. ItsFacilityManager->FDsrcLists.UnLock();
  1513. sFacility = FAC_DSRC;
  1514. sShowIcon = ChkDrawDsrc->Checked ? "1" : "0";
  1515. sShowInfo = "0";
  1516. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1517. if (sObjList != "")
  1518. {
  1519. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1520. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1521. }
  1522. }
  1523. #endif
  1524. #ifdef USE_PVMS
  1525. sObjList = "";
  1526. try
  1527. {
  1528. ItsFacilityManager->FPisLists.Lock();
  1529. FOR_STL(TItsPis *, pObj, ItsFacilityManager->FPisLists)
  1530. {
  1531. if (pObj->DEL_YN == "Y") continue;
  1532. pFacility = ItsFacilityManager->FLists.Find(pObj->FCLT_ID);
  1533. if (!pFacility) continue;
  1534. sStatus = pFacility->FComm;
  1535. String sLoc = pObj->FCLT_LCTN;
  1536. sObjList += (pObj->PIS_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->PIS_ID + ",0,|");
  1537. }
  1538. }
  1539. __finally
  1540. {
  1541. ItsFacilityManager->FPisLists.UnLock();
  1542. sFacility = FAC_PVMS;
  1543. sShowIcon = ChkDrawPis->Checked ? "1" : "0";
  1544. sShowInfo = "0";
  1545. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1546. if (sObjList != "")
  1547. {
  1548. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1549. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1550. }
  1551. }
  1552. #endif
  1553. #ifdef USE_PVDS
  1554. sObjList = "";
  1555. try
  1556. {
  1557. ItsFacilityManager->FPcsLists.Lock();
  1558. FOR_STL(TItsPcs *, pObj, ItsFacilityManager->FPcsLists)
  1559. {
  1560. if (pObj->DEL_YN == "Y") continue;
  1561. pFacility = ItsFacilityManager->FLists.Find(pObj->FCLT_ID);
  1562. if (!pFacility) continue;
  1563. sStatus = pFacility->FComm;
  1564. String sLoc = pObj->FCLT_LCTN;
  1565. sObjList += (pObj->PCS_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->PCS_ID + ",0,|");
  1566. }
  1567. }
  1568. __finally
  1569. {
  1570. ItsFacilityManager->FPcsLists.UnLock();
  1571. sFacility = FAC_PVDS;
  1572. sShowIcon = ChkDrawPcs->Checked ? "1" : "0";
  1573. sShowInfo = "0";
  1574. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1575. if (sObjList != "")
  1576. {
  1577. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1578. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1579. }
  1580. }
  1581. #endif
  1582. #ifdef USE_PARK
  1583. sObjList = "";
  1584. try
  1585. {
  1586. ItsFacilityManager->FParkLists.Lock();
  1587. FOR_STL(TItsParking *, pObj, ItsFacilityManager->FParkLists)
  1588. {
  1589. if (pObj->DEL_YN == "Y") continue;
  1590. sStatus = "0";
  1591. pFacility = ItsFacilityManager->FLists.Find(pObj->CTLR_MNGM_NMBR);
  1592. if (!pFacility) continue;
  1593. sStatus = pFacility->FComm;
  1594. String sLoc = pObj->CTLR_MNGM_NM;
  1595. sObjList += (pObj->CTLR_MNGM_NMBR + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + String(pObj->WHOL_NPLS) + ",0,|");
  1596. }
  1597. }
  1598. __finally
  1599. {
  1600. ItsFacilityManager->FParkLists.UnLock();
  1601. sFacility = FAC_PARK;
  1602. sShowIcon = ChkDrawPark->Checked ? "1" : "0";
  1603. sShowInfo = "0";
  1604. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1605. if (sObjList != "")
  1606. {
  1607. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1608. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1609. }
  1610. }
  1611. #endif
  1612. #ifdef USE_BIT
  1613. sObjList = "";
  1614. try
  1615. {
  1616. ItsFacilityManager->FBitLists.Lock();
  1617. FOR_STL(TItsBit *, pObj, ItsFacilityManager->FBitLists)
  1618. {
  1619. if (pObj->DEL_YN == "Y") continue;
  1620. pFacility = ItsFacilityManager->FLists.Find(pObj->FCLT_ID);
  1621. if (!pFacility) continue;
  1622. sStatus = pFacility->FComm;
  1623. String sLoc = pObj->FCLT_LCTN;
  1624. sObjList += (pObj->FCLT_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->BIT_ID + ",0,|");
  1625. }
  1626. }
  1627. __finally
  1628. {
  1629. ItsFacilityManager->FBitLists.UnLock();
  1630. sFacility = FAC_BIT;
  1631. sShowIcon = ChkDrawBit->Checked ? "1" : "0";
  1632. sShowInfo = "0";
  1633. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1634. if (sObjList != "")
  1635. {
  1636. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1637. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1638. }
  1639. }
  1640. #endif
  1641. #ifdef USE_SIG
  1642. sObjList = "";
  1643. try
  1644. {
  1645. ItsFacilityManager->FSigLists.Lock();
  1646. FOR_STL(TItsSig *, pObj, ItsFacilityManager->FSigLists)
  1647. {
  1648. if (pObj->DEL_YN == "Y") continue;
  1649. pFacility = ItsFacilityManager->FLists.Find(pObj->FCLT_ID);
  1650. if (!pFacility) continue;
  1651. sStatus = pFacility->FComm;
  1652. String sLoc = pObj->FCLT_LCTN;
  1653. sObjList += (pObj->FCLT_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->SIG_ID + ",0,|");
  1654. }
  1655. }
  1656. __finally
  1657. {
  1658. ItsFacilityManager->FSigLists.UnLock();
  1659. sFacility = FAC_SIG;
  1660. sShowIcon = ChkDrawSig->Checked ? "1" : "0";
  1661. sShowInfo = "0";
  1662. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1663. if (sObjList != "")
  1664. {
  1665. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1666. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1667. }
  1668. }
  1669. #endif
  1670. #ifdef USE_SIGDET
  1671. sObjList = "";
  1672. try
  1673. {
  1674. ItsFacilityManager->FSigDetLists.Lock();
  1675. FOR_STL(TItsSigDet *, pObj, ItsFacilityManager->FSigDetLists)
  1676. {
  1677. if (pObj->DEL_YN == "Y") continue;
  1678. pFacility = ItsFacilityManager->FLists.Find(pObj->FCLT_ID);
  1679. if (!pFacility) continue;
  1680. sStatus = pFacility->FComm;
  1681. String sLoc = pObj->FCLT_LCTN;
  1682. sObjList += (pObj->FCLT_ID + "," + sStatus + "," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->SDET_ID + ",0,|");
  1683. }
  1684. }
  1685. __finally
  1686. {
  1687. ItsFacilityManager->FSigDetLists.UnLock();
  1688. sFacility = FAC_SIGDET;
  1689. sShowIcon = ChkDrawSigDet->Checked ? "1" : "0";
  1690. sShowInfo = "0";
  1691. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1692. if (sObjList != "")
  1693. {
  1694. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1695. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1696. }
  1697. }
  1698. #endif
  1699. #endif
  1700. }
  1701. //---------------------------------------------------------------------------
  1702. /*
  1703. * 남양주 블랙박스 이벤트 상태 표출
  1704. * arguments
  1705. *
  1706. * return
  1707. * void
  1708. */
  1709. void __fastcall TITS00MAP::UpdateEventStatus()
  1710. {
  1711. if (!MapStart) return;
  1712. String sFacility;
  1713. String sShowIcon;
  1714. String sShowInfo;
  1715. String sObjList;
  1716. int nStatus = 0;
  1717. sObjList = "";
  1718. try
  1719. {
  1720. ItsEventManager->FLists.Lock();
  1721. FOR_STL(TItsEvent *, pObj, ItsEventManager->FLists)
  1722. {
  1723. //String sTitle = "▶▶돌발 정보◀◀|돌발 ID : " + pObj->INCD_OCRR_ID + "|제목 : " + pObj->INCD_TITL + "|유형 : " + sStatusMsg[nStatus];
  1724. //sTitle += "|돌발등록시각: " + ITSUtil_StrToTime(pObj->RGST_DT) + "|돌발시작시각: " + ITSUtil_StrToTime(pObj->FINCD_STRT_DT);
  1725. String sTitle = pObj->TRMN_ID;
  1726. String sInfo = pObj->ID + "$" + sTitle + "$" + pObj->EVT_TYPE + "$" + ITSUtil_StrToDateTime(pObj->OCRR_DT).FormatString(STR_DATETIME);
  1727. sObjList += (pObj->ID + "," + String(nStatus) + "," + sTitle + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + sInfo + "|");
  1728. }
  1729. }
  1730. __finally
  1731. {
  1732. ItsEventManager->FLists.UnLock();
  1733. sFacility = FAC_EVENT;
  1734. sShowIcon = ChkDrawEvent->Checked ? "1" : "0";
  1735. sShowInfo = "0";
  1736. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RemoveFacility", sFacility);
  1737. if (sObjList != "")
  1738. {
  1739. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  1740. //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddFacility", sFacility + "|" + sShowIcon + "|" + sShowInfo + "|" + sObjList);
  1741. }
  1742. }
  1743. //TCommFlash::CallFunc(ShockwaveFlash1, "RefreshMap", "");
  1744. }
  1745. //---------------------------------------------------------------------------
  1746. void __fastcall TITS00MAP::pmuFacilityPopup(TObject *Sender)
  1747. {
  1748. String sLoc = " ";
  1749. TPopupMenu *pMenu = (TPopupMenu*)Sender;
  1750. if (pMenu->Tag == 0)
  1751. {
  1752. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(FSelId);
  1753. if (pObj) sLoc = pObj->ISTL_LCTN_NM;
  1754. //MnuCctvId->Caption = "[CCTV] " + FSelId + " " + sLoc;
  1755. MnuCctvId->Caption = "[CCTV] " + sLoc;
  1756. mnuCctvCam->Enabled = false;
  1757. if (pObj)
  1758. {
  1759. if (pObj->STRM_SESN_NM.Trim() != "")
  1760. {
  1761. mnuCctvCam->Enabled = true;
  1762. }
  1763. }
  1764. }
  1765. else
  1766. if (pMenu->Tag == 1)
  1767. {
  1768. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(FSelId);
  1769. if (pObj) sLoc = pObj->VMS_NM;
  1770. //MnuVmsId->Caption = "[VMS] " + FSelId + " " + sLoc;
  1771. MnuVmsId->Caption = "[VMS] " + sLoc;
  1772. mnuVmsCam->Enabled = false;
  1773. if (pObj)
  1774. {
  1775. if (pObj->STRM_SESN_NM.Trim() != "")
  1776. {
  1777. mnuVmsCam->Enabled = true;
  1778. }
  1779. }
  1780. }
  1781. else
  1782. if (pMenu->Tag == 2)
  1783. {
  1784. TItsRse *pObj = ItsFacilityManager->FRseLists.Find(FSelId);
  1785. if (pObj) sLoc = pObj->LOCATION;
  1786. //MnuRseId->Caption = "[RSE] " + FSelId + " " + sLoc;
  1787. MnuRseId->Caption = "[RSE] " + sLoc;
  1788. }
  1789. else
  1790. if (pMenu->Tag == 3)
  1791. {
  1792. TItsWebCam *pObj = ItsFacilityManager->FWebCamLists.Find(FSelId);
  1793. if (pObj) sLoc = pObj->ISTL_LCTN_NM;
  1794. //MnuWebCamId->Caption = "[웹카메라] " + FSelId + " " + sLoc;
  1795. MnuWebCamId->Caption = "[Web Camera] " + sLoc;
  1796. }
  1797. else
  1798. if (pMenu->Tag == 4)
  1799. {
  1800. TItsVds *pObj = ItsFacilityManager->FVdsLists.Find(FSelId);
  1801. if (pObj) sLoc = pObj->LCTN;
  1802. //MnuVdsId->Caption = "[VDS] " + FSelId + " " + sLoc;
  1803. MnuVdsId->Caption = "[VDS] " + sLoc;
  1804. }
  1805. else
  1806. if (pMenu->Tag == 5)
  1807. {
  1808. TItsAvi *pObj = ItsFacilityManager->FAviLists.Find(FSelId);
  1809. if (pObj) sLoc = pObj->AVI_LCTN_NM;
  1810. //MnuAviId->Caption = "[AVI] " + FSelId + " " + sLoc;
  1811. MnuAviId->Caption = "[AVI] " + sLoc;
  1812. }
  1813. else
  1814. if (pMenu->Tag == 6)
  1815. {
  1816. TItsDsrc *pObj = ItsFacilityManager->FDsrcLists.Find(FSelId);
  1817. if (pObj) sLoc = pObj->ISTL_LCTN_NM;
  1818. //MnuDsrcId->Caption = "[DSRC] " + FSelId + " " + sLoc;
  1819. MnuDsrcId->Caption = "[DSRC] " + sLoc;
  1820. }
  1821. else
  1822. if (pMenu->Tag == 7)
  1823. {
  1824. TItsBit *pObj = ItsFacilityManager->FBitLists.Find(FSelId);
  1825. if (pObj) sLoc = pObj->FCLT_LCTN;
  1826. //MnuBitId->Caption = "[BIT] " + FSelId + " " + sLoc;
  1827. MnuBitId->Caption = "[BIT] " + sLoc;
  1828. }
  1829. else
  1830. if (pMenu->Tag == 8)
  1831. {
  1832. TItsSig *pObj = ItsFacilityManager->FSigLists.Find(FSelId);
  1833. if (pObj) sLoc = pObj->FCLT_LCTN;
  1834. //MnuSigId->Caption = "[SIG] " + FSelId + " " + sLoc;
  1835. MnuSigId->Caption = "[SIG] " + sLoc;
  1836. }
  1837. else
  1838. if (pMenu->Tag == 9)
  1839. {
  1840. TItsSigDet *pObj = ItsFacilityManager->FSigDetLists.Find(FSelId);
  1841. if (pObj) sLoc = pObj->FCLT_LCTN;
  1842. //MnuSigDetId->Caption = "[LVD] " + FSelId + " " + sLoc;
  1843. MnuSigDetId->Caption = "[LVD] " + sLoc;
  1844. }
  1845. else
  1846. if (pMenu->Tag == 10)
  1847. {
  1848. TItsPis *pObj = ItsFacilityManager->FPisLists.Find(FSelId);
  1849. if (pObj) sLoc = pObj->FCLT_LCTN;
  1850. MnuPisId->Caption = "[PIS] " + sLoc;
  1851. }
  1852. else
  1853. if (pMenu->Tag == 11)
  1854. {
  1855. TItsPcs *pObj = ItsFacilityManager->FPcsLists.Find(FSelId);
  1856. if (pObj) sLoc = pObj->FCLT_LCTN;
  1857. MnuPcsId->Caption = "[PCS] " + sLoc;
  1858. }
  1859. }
  1860. //---------------------------------------------------------------------------
  1861. void __fastcall TITS00MAP::mnuFacilityPingClick(TObject *Sender)
  1862. {
  1863. TMenuItem *pMenu = (TMenuItem*)Sender;
  1864. String sIp;
  1865. Application->ProcessMessages();
  1866. if (pMenu->Tag == 31)// && 39 >= pMenu->Tag)
  1867. {
  1868. TItsPis *pObj = ItsFacilityManager->FPisLists.Find(FSelId);
  1869. if (pObj)
  1870. {
  1871. #if 0
  1872. switch(pMenu->Tag)
  1873. {
  1874. case 31: sIp = pObj->CCTV_CAPT_IP.Trim(); break;
  1875. default: sIp = pObj->CCTV_CTLR_IP.Trim(); break;
  1876. }
  1877. #endif
  1878. }
  1879. }
  1880. else
  1881. if (pMenu->Tag == 41)// && 49 >= pMenu->Tag)
  1882. {
  1883. TItsPcs *pObj = ItsFacilityManager->FPcsLists.Find(FSelId);
  1884. if (pObj)
  1885. {
  1886. #if 0
  1887. switch(pMenu->Tag)
  1888. {
  1889. case 31: sIp = pObj->CCTV_CAPT_IP.Trim(); break;
  1890. default: sIp = pObj->CCTV_CTLR_IP.Trim(); break;
  1891. }
  1892. #endif
  1893. }
  1894. }
  1895. else
  1896. if (pMenu->Tag >= 11 && 15 >= pMenu->Tag)
  1897. {
  1898. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(FSelId);
  1899. if (pObj)
  1900. {
  1901. switch(pMenu->Tag)
  1902. {
  1903. case 12: sIp = pObj->CCTV_CAPT_IP.Trim(); break;
  1904. case 13: sIp = pObj->CCTV_ENCD_IP.Trim(); break;
  1905. case 14: sIp = pObj->STRM_SVR_IP.Trim(); break;
  1906. case 15: sIp = pObj->CCTV_FIBR_IP.Trim(); break;
  1907. case 11:
  1908. default: sIp = pObj->CCTV_CTLR_IP.Trim(); break;
  1909. }
  1910. }
  1911. }
  1912. else
  1913. if (pMenu->Tag >= 21 && 22 >= pMenu->Tag)
  1914. {
  1915. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(FSelId);
  1916. if (pObj)
  1917. {
  1918. switch(pMenu->Tag)
  1919. {
  1920. case 22: sIp = pObj->WEB_CMRA_IP.Trim(); break;
  1921. case 21:
  1922. default: sIp = pObj->VMS_CTLR_IP.Trim(); break;
  1923. }
  1924. }
  1925. }
  1926. else
  1927. if (pMenu->Tag == 2)
  1928. {
  1929. TItsRse *pObj = ItsFacilityManager->FRseLists.Find(FSelId);
  1930. if (pObj) sIp = pObj->RSEIP.Trim();
  1931. }
  1932. else
  1933. if (pMenu->Tag == 4)
  1934. {
  1935. TItsVds *pObj = ItsFacilityManager->FVdsLists.Find(FSelId);
  1936. if (pObj) sIp = pObj->TRMN_IP.Trim();
  1937. }
  1938. else
  1939. if (pMenu->Tag == 5)
  1940. {
  1941. TItsAvi *pObj = ItsFacilityManager->FAviLists.Find(FSelId);
  1942. if (pObj) sIp = pObj->AVI_CTLR_IP.Trim();
  1943. }
  1944. else
  1945. if (pMenu->Tag == 6)
  1946. {
  1947. TItsDsrc *pObj = ItsFacilityManager->FDsrcLists.Find(FSelId);
  1948. if (pObj) sIp = pObj->IP.Trim();
  1949. }
  1950. else
  1951. if (pMenu->Tag == 88)
  1952. {
  1953. TItsParking *pObj = ItsFacilityManager->FParkLists.Find(FSelId);
  1954. if (pObj) sIp = pObj->TRMN_IP.Trim();
  1955. }
  1956. else
  1957. if (pMenu->Tag == 99)
  1958. {
  1959. TItsWebCam *pObj = ItsFacilityManager->FWebCamLists.Find(FSelId);
  1960. if (pObj) sIp = pObj->CMRA_IP.Trim();
  1961. }
  1962. if (sIp.IsEmpty())
  1963. {
  1964. Application->MessageBox(L"IP Address 정보가 없습니다.\r\nIP Address 정보를 확인하세요.",
  1965. L"네크워크 연결확인", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1966. return;
  1967. }
  1968. if (sIp != "")
  1969. {
  1970. ITSUtil_NetworkPing(sIp);
  1971. }
  1972. }
  1973. //---------------------------------------------------------------------------
  1974. void __fastcall TITS00MAP::mnuStopImageClick(TObject *Sender)
  1975. {
  1976. Application->ProcessMessages();
  1977. TPoint pt;
  1978. GetCursorPos(&pt);
  1979. pt = ITS0000M->ScreenToClient(pt);
  1980. ShowCctvStopImage(FSelId, pt);
  1981. }
  1982. //---------------------------------------------------------------------------
  1983. void __fastcall TITS00MAP::mnuCctvCamClick(TObject *Sender)
  1984. {
  1985. Application->ProcessMessages();
  1986. TPoint pt;
  1987. GetCursorPos(&pt);
  1988. pt = ITS0000M->ScreenToClient(pt);
  1989. ShowCctvCamera(FSelId, pt);
  1990. }
  1991. //---------------------------------------------------------------------------
  1992. void __fastcall TITS00MAP::mnuVmsMsgClick(TObject *Sender)
  1993. {
  1994. Application->ProcessMessages();
  1995. TPoint pt;
  1996. GetCursorPos(&pt);
  1997. pt = ITS0000M->ScreenToClient(pt);
  1998. ShowVmsMessage(FSelId, pt);
  1999. }
  2000. //---------------------------------------------------------------------------
  2001. void __fastcall TITS00MAP::mnuVmsCamClick(TObject *Sender)
  2002. {
  2003. Application->ProcessMessages();
  2004. TPoint pt;
  2005. GetCursorPos(&pt);
  2006. pt = ITS0000M->ScreenToClient(pt);
  2007. ShowVmsCamera(FSelId, pt);
  2008. }
  2009. //---------------------------------------------------------------------------
  2010. void __fastcall TITS00MAP::ShowCctvStopImage(String AId, TPoint pt)
  2011. {
  2012. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(AId);
  2013. if (!pObj) return;
  2014. try {
  2015. if (pObj->FData1)
  2016. {
  2017. TFrmCctvImg *pForm = (TFrmCctvImg *)pObj->FData1;
  2018. pForm->SetFocus();
  2019. pForm->LoadStopImage();
  2020. }
  2021. else
  2022. {
  2023. TFrmCctvImg *pForm = new TFrmCctvImg(ITS0000M);
  2024. pForm->Parent = ITS0000M;
  2025. if ((pt.x + pForm->Width + 5) > this->Width)
  2026. {
  2027. pt.x = this->Width - pForm->Width - 5;
  2028. }
  2029. if ((pt.y + pForm->Height + 5) > this->Height)
  2030. {
  2031. pt.y = this->Height - pForm->Height - 5;
  2032. }
  2033. pForm->Left = Left + pt.x;
  2034. pForm->Top = Top + pt.y;
  2035. pForm->FObj = pObj;
  2036. pObj->FData1 = (void*)pForm;
  2037. pForm->Show();
  2038. }
  2039. } catch(...) {}
  2040. }
  2041. //---------------------------------------------------------------------------
  2042. void __fastcall TITS00MAP::ShowCctvCamera(String AId, TPoint pt)
  2043. {
  2044. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(AId);
  2045. if (!pObj) return;
  2046. try {
  2047. if (pObj->FData2)
  2048. {
  2049. TFrmStreamPlayer *pForm = (TFrmStreamPlayer *)pObj->FData2;
  2050. pForm->SetFocus();
  2051. //pForm->RefreshCctv();
  2052. }
  2053. else
  2054. {
  2055. TFrmStreamPlayer *pForm = new TFrmStreamPlayer(ITS0000M);
  2056. pForm->FObj.IsCctv = true;
  2057. pForm->FObj.ID = pObj->CCTV_CTLR_ID;
  2058. pForm->FObj.NAME = pObj->ISTL_LCTN_NM;
  2059. pForm->FObj.RTSP_ADDR = pObj->STRM_SESN_NM;
  2060. pForm->FObj.Data = &pObj->FData2;
  2061. pForm->FObj.Installed = true;
  2062. pForm->Parent = ITS0000M;
  2063. if ((pt.x + pForm->Width + 5) > this->Width)
  2064. {
  2065. pt.x = this->Width - pForm->Width - 5;
  2066. }
  2067. if ((pt.y + pForm->Height + 5) > this->Height)
  2068. {
  2069. pt.y = this->Height - pForm->Height - 5;
  2070. }
  2071. pForm->Left = Left + pt.x;
  2072. pForm->Top = Top + pt.y;
  2073. pObj->FData2 = (void*)pForm;
  2074. pForm->Show();
  2075. }
  2076. } catch(...) {}
  2077. }
  2078. //---------------------------------------------------------------------------
  2079. void __fastcall TITS00MAP::ShowVmsCamera(String AId, TPoint pt)
  2080. {
  2081. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(FSelId);
  2082. if (!pObj) return;
  2083. try {
  2084. if (pObj->FData2)
  2085. {
  2086. TFrmStreamPlayer *pForm = (TFrmStreamPlayer *)pObj->FData2;
  2087. pForm->SetFocus();
  2088. //pForm->RefreshVms();
  2089. }
  2090. else
  2091. {
  2092. TFrmStreamPlayer *pForm = new TFrmStreamPlayer(ITS0000M);
  2093. pForm->FObj.IsCctv = false;
  2094. pForm->FObj.ID = String(pObj->VMS_CTLR_NMBR);
  2095. pForm->FObj.NAME = pObj->VMS_NM;
  2096. pForm->FObj.RTSP_ADDR = pObj->STRM_SESN_NM;
  2097. pForm->FObj.Data = &pObj->FData2;
  2098. pForm->FObj.Installed = true;
  2099. pForm->Parent = ITS0000M;
  2100. if ((pt.x + pForm->Width + 5) > this->Width)
  2101. {
  2102. pt.x = this->Width - pForm->Width - 5;
  2103. }
  2104. if ((pt.y + pForm->Height + 5) > this->Height)
  2105. {
  2106. pt.y = this->Height - pForm->Height - 5;
  2107. }
  2108. pForm->Left = Left + pt.x;
  2109. pForm->Top = Top + pt.y;
  2110. pObj->FData2 = (void*)pForm;
  2111. pForm->Show();
  2112. }
  2113. } catch(...) {}
  2114. }
  2115. //---------------------------------------------------------------------------
  2116. void __fastcall TITS00MAP::ShowWebCamera(String AId, TPoint pt)
  2117. {
  2118. TItsWebCam *pObj = ItsFacilityManager->FWebCamLists.Find(FSelId);
  2119. if (!pObj) return;
  2120. try {
  2121. if (pObj->FData2)
  2122. {
  2123. TFrmStreamPlayer *pForm = (TFrmStreamPlayer *)pObj->FData2;
  2124. pForm->SetFocus();
  2125. }
  2126. else
  2127. {
  2128. TFrmStreamPlayer *pForm = new TFrmStreamPlayer(ITS0000M);
  2129. pForm->FObj.IsCctv = false;
  2130. pForm->FObj.ID = pObj->WEB_CMRA_ID;
  2131. pForm->FObj.NAME = pObj->ISTL_LCTN_NM;
  2132. pForm->FObj.RTSP_ADDR = pObj->STRM_SESN_NM;
  2133. pForm->FObj.Data = &pObj->FData2;
  2134. pForm->FObj.Installed = true;
  2135. pForm->Parent = ITS0000M;
  2136. if ((pt.x + pForm->Width + 5) > this->Width)
  2137. {
  2138. pt.x = this->Width - pForm->Width - 5;
  2139. }
  2140. if ((pt.y + pForm->Height + 5) > this->Height)
  2141. {
  2142. pt.y = this->Height - pForm->Height - 5;
  2143. }
  2144. pForm->Left = Left + pt.x;
  2145. pForm->Top = Top + pt.y;
  2146. pObj->FData2 = (void*)pForm;
  2147. pForm->Show();
  2148. }
  2149. } catch(...) {}
  2150. }
  2151. //---------------------------------------------------------------------------
  2152. void __fastcall TITS00MAP::ShowVmsMessage(String AId, TPoint pt)
  2153. {
  2154. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(FSelId);
  2155. if (!pObj) return;
  2156. try {
  2157. if (pObj->FData1)
  2158. {
  2159. TFrmVmsMsg *pForm = (TFrmVmsMsg *)pObj->FData1;
  2160. pForm->SetFocus();
  2161. }
  2162. else
  2163. {
  2164. TFrmVmsMsg *pForm = new TFrmVmsMsg(ITS0000M, pObj);
  2165. pForm->Parent = ITS0000M;
  2166. int nHG = pForm->ClientHeight - pForm->PnlVmsMsgDisp->Height;
  2167. int nWG = pForm->ClientWidth - pForm->PnlVmsMsgDisp->Width;
  2168. #if 0
  2169. pForm->ClientHeight = nHG + pObj->Height;
  2170. pForm->ClientWidth = nWG + pObj->Width;
  2171. #endif
  2172. if ((pt.x + pForm->Width + 5) > this->Width)
  2173. {
  2174. pt.x = this->Width - pForm->Width - 5;
  2175. }
  2176. if ((pt.y + pForm->Height + 5) > this->Height)
  2177. {
  2178. pt.y = this->Height - pForm->Height - 5;
  2179. }
  2180. pForm->Left = Left + pt.x;
  2181. pForm->Top = Top + pt.y;
  2182. pObj->FData1 = (void*)pForm;
  2183. pForm->Show();
  2184. }
  2185. } catch(...) {}
  2186. }
  2187. //---------------------------------------------------------------------------
  2188. void __fastcall TITS00MAP::RefreshGisLink()
  2189. {
  2190. SelectLinkById(g_SelLink.Level, g_SelLink.Id, true);
  2191. }
  2192. //---------------------------------------------------------------------------
  2193. void __fastcall TITS00MAP::MnuWebCamClick(TObject *Sender)
  2194. {
  2195. Application->ProcessMessages();
  2196. TPoint pt;
  2197. GetCursorPos(&pt);
  2198. pt = ITS0000M->ScreenToClient(pt);
  2199. ShowWebCamera(FSelId, pt);
  2200. }
  2201. //---------------------------------------------------------------------------
  2202. void __fastcall TITS00MAP::TmrLblTrafficTimer(TObject *Sender)
  2203. {
  2204. TmrLblTraffic->Enabled = false;
  2205. LblTraffic->Visible = false;
  2206. }
  2207. //---------------------------------------------------------------------------
  2208. void __fastcall TITS00MAP::OnMapPopupMenu(String AType, String AId, String APosX, String APosY, String AInfo)
  2209. {
  2210. FSelId = AId;
  2211. POINT p;
  2212. GetCursorPos(&p);
  2213. String sType = AType;
  2214. if (sType == FAC_CCTV) pmuCctv->Popup(p.x, p.y);
  2215. else if (sType == FAC_VMS) pmuVms->Popup(p.x, p.y);
  2216. else if (sType == FAC_RSE) pmuRse->Popup(p.x, p.y);
  2217. else if (sType == FAC_WCAM) pmuWebCam->Popup(p.x, p.y);
  2218. else if (sType == FAC_VDS) pmuVds->Popup(p.x, p.y);
  2219. else if (sType == FAC_AVI) pmuAvi->Popup(p.x, p.y);
  2220. else if (sType == FAC_DSRC) pmuDsrc->Popup(p.x, p.y);
  2221. else if (sType == FAC_BIT) pmuBit->Popup(p.x, p.y);
  2222. else if (sType == FAC_SIG) pmuSig->Popup(p.x, p.y);
  2223. else if (sType == FAC_SIGDET) pmuSigDet->Popup(p.x, p.y);
  2224. else if (sType == FAC_PVMS) pmuPis->Popup(p.x, p.y);
  2225. else if (sType == FAC_PVDS) pmuPis->Popup(p.x, p.y);
  2226. else if (AType == "LINK")
  2227. {
  2228. //AInfo == LinkId
  2229. //pmuGis->Popup(p.x, p.y);
  2230. }
  2231. #if 0
  2232. else
  2233. if (AType == "PIS")
  2234. {
  2235. pmuPis->Popup(p.x, p.y);
  2236. }
  2237. else
  2238. if (AType == "PCS")
  2239. {
  2240. pmuPis->Popup(p.x, p.y);
  2241. }
  2242. #endif
  2243. }
  2244. //---------------------------------------------------------------------------
  2245. void __fastcall TITS00MAP::SelGisItem(int AType, String AId)
  2246. {
  2247. try
  2248. {
  2249. if (!MapStart) return;
  2250. #if 0
  2251. switch(AType)
  2252. {
  2253. case 0: TCommFlash::CallFunc(ShockwaveFlash1, "MoveNode", AId); break;
  2254. case 1: TCommFlash::CallFunc(ShockwaveFlash1, "FindLink", AId); break;
  2255. case 2: TCommFlash::CallFunc(ShockwaveFlash1, "FindLink", AId); break;
  2256. case 3: TCommFlash::CallFunc(ShockwaveFlash1, "FindLink", AId); break;
  2257. default: return;
  2258. }
  2259. #endif
  2260. }
  2261. catch(...)
  2262. {
  2263. }
  2264. }
  2265. //---------------------------------------------------------------------------
  2266. void __fastcall TITS00MAP::ShowLayerEditForm()
  2267. {
  2268. }
  2269. //---------------------------------------------------------------------------
  2270. void __fastcall TITS00MAP::RemoveMarker(TGMMarker *AMarker)
  2271. {
  2272. TGMMarker *pObjMarker = (TGMMarker*)AMarker;
  2273. try
  2274. {
  2275. pObjMarker->Map = NULL;
  2276. int nObjs = pObjMarker->Count;
  2277. for (int ii = nObjs - 1; ii >= 0; ii--)
  2278. {
  2279. pObjMarker->Items[ii]->Visible = false;
  2280. pObjMarker->Delete(ii);
  2281. }
  2282. pObjMarker->Clear();
  2283. }
  2284. catch(Exception &e)
  2285. {
  2286. }
  2287. }
  2288. //---------------------------------------------------------------------------
  2289. void __fastcall TITS00MAP::GMMarkerVmsRightClick(TObject *Sender, TLatLng *LatLng, int Index, TLinkedComponent *LinkedComponent)
  2290. {
  2291. try
  2292. {
  2293. TMarker *pMkr = GMMarkerVms->Items[Index];
  2294. if (pMkr)
  2295. {
  2296. TItsVms *pObj = (TItsVms*)pMkr->Tag;
  2297. if (pObj)
  2298. {
  2299. FSelId = pObj->VMS_CTLR_ID;
  2300. }
  2301. }
  2302. POINT p;
  2303. GetCursorPos(&p);
  2304. pmuVms->Popup(p.x, p.y);
  2305. }
  2306. catch(Exception &e)
  2307. {
  2308. }
  2309. }
  2310. //---------------------------------------------------------------------------
  2311. void __fastcall TITS00MAP::GMMarkerVdsRightClick(TObject *Sender, TLatLng *LatLng, int Index, TLinkedComponent *LinkedComponent)
  2312. {
  2313. try
  2314. {
  2315. TMarker *pMkr = GMMarkerVds->Items[Index];
  2316. if (pMkr)
  2317. {
  2318. TItsVds *pObj = (TItsVds*)pMkr->Tag;
  2319. if (pObj)
  2320. {
  2321. FSelId = pObj->VDS_CTLR_ID;
  2322. }
  2323. }
  2324. POINT p;
  2325. GetCursorPos(&p);
  2326. pmuVds->Popup(p.x, p.y);
  2327. }
  2328. catch(Exception &e)
  2329. {
  2330. }
  2331. }
  2332. //---------------------------------------------------------------------------
  2333. void __fastcall TITS00MAP::GMMap1AfterPageLoaded(TObject *Sender, bool First)
  2334. {
  2335. DebugList(First ? "GMMap1AfterPageLoaded: First = TRUE" : "GMMap1AfterPageLoaded: First = FALSE");
  2336. if (!FIsBrowserLoading)
  2337. {
  2338. GMMap1->DoMap();
  2339. GMMap1->Tag = 1;
  2340. PnlToolbar->Enabled = true;
  2341. MapStart = true;
  2342. FIsBrowserLoading = true;
  2343. }
  2344. if (FExtent.Extent)
  2345. {
  2346. AddExtentQ(GMMap1->RequiredProp->Center->Lat, GMMap1->RequiredProp->Center->Lng, GMMap1->RequiredProp->Zoom);
  2347. }
  2348. FExtent.Extent = true;
  2349. ShowHideTraffic();
  2350. }
  2351. //---------------------------------------------------------------------------
  2352. void __fastcall TITS00MAP::GMMap1BoundsChanged(TObject *Sender, TLatLngBounds *NewBounds)
  2353. {
  2354. if (FMapBounds)
  2355. {
  2356. FMapBounds->SW->Lat = NewBounds->SW->Lat;
  2357. FMapBounds->SW->Lng = NewBounds->SW->Lng;
  2358. FMapBounds->NE->Lat = NewBounds->NE->Lat;
  2359. FMapBounds->NE->Lng = NewBounds->NE->Lng;
  2360. }
  2361. }
  2362. //---------------------------------------------------------------------------
  2363. void __fastcall TITS00MAP::GMMap1CenterChanged(TObject *Sender, TLatLng *LatLng, double X, double Y)
  2364. {
  2365. FCenterLat = LatLng->Lat;
  2366. FCenterLng = LatLng->Lng;
  2367. }
  2368. //---------------------------------------------------------------------------
  2369. void __fastcall TITS00MAP::GMMap1Drag(TObject *Sender)
  2370. {
  2371. FIsDragging = true;
  2372. }
  2373. //---------------------------------------------------------------------------
  2374. void __fastcall TITS00MAP::GMMap1DragEnd(TObject *Sender)
  2375. {
  2376. FIsDragginStart = false;
  2377. FIsDragginEnd = true;
  2378. FIsDragging = false;
  2379. }
  2380. //---------------------------------------------------------------------------
  2381. void __fastcall TITS00MAP::GMMap1DragStart(TObject *Sender)
  2382. {
  2383. FIsDragginStart = true;
  2384. FIsDragginEnd = false;
  2385. FIsDragging = true;
  2386. }
  2387. //---------------------------------------------------------------------------
  2388. void __fastcall TITS00MAP::GMMap1MouseMove(TObject *Sender, TLatLng *LatLng, double X, double Y)
  2389. {
  2390. FMoveLat = LatLng->Lat;
  2391. FMoveLng = LatLng->Lng;
  2392. }
  2393. //---------------------------------------------------------------------------
  2394. void __fastcall TITS00MAP::GMMap1ZoomChanged(TObject *Sender, int NewZoom)
  2395. {
  2396. FMapZoom = NewZoom;
  2397. if (FMapZoom <= MAP_ZOOM_MAX_ROAD) FMapLinkLevel = 3;
  2398. else
  2399. if (FMapZoom >= MAP_ZOOM_MIN_LINK) FMapLinkLevel = 1;
  2400. else FMapLinkLevel = 2;
  2401. PnlZoom->Caption = "Link: " + String(FMapLinkLevel) + ", Zoom: " + String(FMapZoom);
  2402. }
  2403. //---------------------------------------------------------------------------
  2404. void __fastcall TITS00MAP::GMMap1Click(TObject *Sender, TLatLng *LatLng, double X, double Y)
  2405. {
  2406. //
  2407. }
  2408. //---------------------------------------------------------------------------
  2409. void __fastcall TITS00MAP::GMMap1DblClick(TObject *Sender, TLatLng *LatLng, double X, double Y)
  2410. {
  2411. //
  2412. }
  2413. //---------------------------------------------------------------------------
  2414. void __fastcall TITS00MAP::GMMap1RightClick(TObject *Sender, TLatLng *LatLng, double X, double Y)
  2415. {
  2416. //
  2417. }
  2418. //---------------------------------------------------------------------------
  2419. void __fastcall TITS00MAP::BtnMapToJpgClick(TObject *Sender)
  2420. {
  2421. try
  2422. {
  2423. if (GMMap1->Active)
  2424. {
  2425. SaveDialog1->FileName = Now().FormatString("YYYYMMDDHHNNSS") + ".jpg";
  2426. if (SaveDialog1->Execute())
  2427. {
  2428. GMMap1->SaveToJPGFile(SaveDialog1->FileName);
  2429. }
  2430. }
  2431. } catch(Exception &e) { }
  2432. }
  2433. //---------------------------------------------------------------------------
  2434. void __fastcall TITS00MAP::BtnMoveMapToCenterClick(TObject *Sender)
  2435. {
  2436. // 지도 중앙으로 이동
  2437. try
  2438. {
  2439. if (GMMap1->Active)
  2440. {
  2441. int nZoom = GMMap1->VisualProp->ZoomCtrl->Position;
  2442. GMMap1->SetCenter(FCenLatLng);
  2443. }
  2444. } catch(Exception &e) { }
  2445. }
  2446. //---------------------------------------------------------------------------
  2447. void __fastcall TITS00MAP::BtnMoveDefBoundsClick(TObject *Sender)
  2448. {
  2449. // 지도 기본영역으로 이동
  2450. try
  2451. {
  2452. if (GMMap1->Active)
  2453. {
  2454. GMMap1->SetCenter(FCenLatLng);
  2455. GMMap1->RequiredProp->Zoom = FInitMapZoom;
  2456. }
  2457. } catch(Exception &e) { }
  2458. }
  2459. //---------------------------------------------------------------------------
  2460. void __fastcall TITS00MAP::BtnZoomInClick(TObject *Sender)
  2461. {
  2462. try
  2463. {
  2464. if (GMMap1->Active)
  2465. {
  2466. GMMap1->RequiredProp->Zoom = FMapZoom + 1;
  2467. }
  2468. } catch(Exception &e) { }
  2469. }
  2470. //---------------------------------------------------------------------------
  2471. void __fastcall TITS00MAP::BtnZoomOutClick(TObject *Sender)
  2472. {
  2473. try
  2474. {
  2475. if (GMMap1->Active)
  2476. {
  2477. if (FMapZoom > 0)
  2478. {
  2479. GMMap1->RequiredProp->Zoom = FMapZoom - 1;
  2480. }
  2481. }
  2482. } catch(Exception &e) { }
  2483. }
  2484. //---------------------------------------------------------------------------
  2485. void __fastcall TITS00MAP::BtnZoomPrevClick(TObject *Sender)
  2486. {
  2487. FExtent.Extent = false;
  2488. PrevExtentQ();
  2489. }
  2490. //---------------------------------------------------------------------------
  2491. void __fastcall TITS00MAP::BtnZoomNextClick(TObject *Sender)
  2492. {
  2493. FExtent.Extent = false;
  2494. NextExtentQ();
  2495. }
  2496. //---------------------------------------------------------------------------
  2497. void __fastcall TITS00MAP::BtnRefreshClick(TObject *Sender)
  2498. {
  2499. if (MapStart)
  2500. {
  2501. FrmMain->FPollStatus01.Reset(); // 시설물상태정보
  2502. FrmMain->FPollStatus02.Reset(); // 프로세스상태정보
  2503. FrmMain->FPollStatus03.Reset(); // 돌발정보
  2504. FrmMain->FPollTraffic00.Reset(); // 링크소통정보(전체)
  2505. FrmMain->FPollTraffic01.Reset(); // 링크소통정보
  2506. FrmMain->FPollTraffic02.Reset(); // 서비스링크소통정보
  2507. FrmMain->FPollTraffic03.Reset(); // 도로소통정보
  2508. FrmMain->FPollTraffic04.Reset(); // 반복정체구간
  2509. FrmMain->FPollTraffic05.Reset(); // UTIS운영정보
  2510. FrmMain->FPollEvent01.Reset(); // 블랙박스이벤트
  2511. FrmMain->FPollVilgFrcs.Reset(); // 기상정보
  2512. }
  2513. }
  2514. //---------------------------------------------------------------------------
  2515. void __fastcall TITS00MAP::DebugList(String AMsg)
  2516. {
  2517. if (ListBox1->Visible)
  2518. {
  2519. ListBox1->Items->Add(Now().TimeString() + ", " + AMsg);
  2520. }
  2521. }
  2522. //---------------------------------------------------------------------------
  2523. void __fastcall TITS00MAP::PnlToolbarDblClick(TObject *Sender)
  2524. {
  2525. ListBox1->Visible = !ListBox1->Visible;
  2526. }
  2527. //---------------------------------------------------------------------------
  2528. void __fastcall TITS00MAP::ListBox1DblClick(TObject *Sender)
  2529. {
  2530. ListBox1->Items->Clear();
  2531. }
  2532. //---------------------------------------------------------------------------
  2533. void __fastcall TITS00MAP::GMPolyLinkClick(TObject *Sender, TLatLng *LatLng, int Index, TLinkedComponent *LinkedComponent)
  2534. {
  2535. TGMPolyline* pGrpLink = (TGMPolyline*)Sender;
  2536. TPolyline* pLink = pGrpLink->Items[Index];
  2537. if (BtnIconSelect->SpeedButtonOptions->Down)
  2538. {
  2539. ShowLinkDetailInfo(pLink->Text, pGrpLink->Tag);
  2540. }
  2541. }
  2542. //---------------------------------------------------------------------------
  2543. void __fastcall TITS00MAP::BtnIconSelectClick(TObject *Sender)
  2544. {
  2545. lblGap3->Caption = BtnIconSelect->SpeedButtonOptions->Down ? "S" : "";
  2546. }
  2547. //---------------------------------------------------------------------------