ITS00MAPF.cpp 72 KB

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