FRAME_GoogleMapF.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. //---------------------------------------------------------------------------
  2. #ifndef FRAME_GoogleMapFH
  3. #define FRAME_GoogleMapFH
  4. //---------------------------------------------------------------------------
  5. #include <Classes.hpp>
  6. #include <Controls.hpp>
  7. #include <StdCtrls.hpp>
  8. #include <Forms.hpp>
  9. //---------------------------------------------------------------------------
  10. #include "DataTypesF.h"
  11. #include "WindowMsgF.h"
  12. #include "cxButtons.hpp"
  13. #include "cxCheckBox.hpp"
  14. #include "cxContainer.hpp"
  15. #include "cxControls.hpp"
  16. #include "cxEdit.hpp"
  17. #include "cxGraphics.hpp"
  18. #include "cxLabel.hpp"
  19. #include "cxLookAndFeelPainters.hpp"
  20. #include "cxLookAndFeels.hpp"
  21. #include "dxSkinBlack.hpp"
  22. #include "dxSkinBlue.hpp"
  23. #include "dxSkinsCore.hpp"
  24. #include "GMClasses.hpp"
  25. #include "GMLinkedComponents.hpp"
  26. #include "GMMap.hpp"
  27. #include "GMMapVCL.hpp"
  28. #include "GMMarker.hpp"
  29. #include "GMMarkerVCL.hpp"
  30. #include <Dialogs.hpp>
  31. #include <ExtCtrls.hpp>
  32. #include <Menus.hpp>
  33. #include <OleCtrls.hpp>
  34. #include <SHDocVw.hpp>
  35. //---------------------------------------------------------------------------
  36. /*
  37. * 이전/다음 구현을 위한 구조체 선언
  38. * 정적 이중링크로 구현
  39. */
  40. #define D_EXT_QUEUE_SIZE 256 //512//1024/2048
  41. #define D_EXT_QUEUE_MASK (D_EXT_QUEUE_SIZE-1)
  42. /*
  43. * 레이어 Extent 정보
  44. */
  45. typedef struct
  46. {
  47. short Zoom;
  48. double Lat;
  49. double Lng;
  50. } TMapExtent;
  51. typedef struct
  52. {
  53. bool Extent;
  54. short TotCnt;
  55. short CurIdx;
  56. TMapExtent extent[D_EXT_QUEUE_SIZE+1];
  57. } EXTENT_QUEUE;
  58. //---------------------------------------------------------------------------
  59. class TObjGMMap : public TCustomGMMap
  60. {
  61. public:
  62. void __fastcall SettingZoom(int Zoom) { SetZoom(Zoom); };
  63. };
  64. //---------------------------------------------------------------------------
  65. class TFRAMEGoogleMap : public TFrame
  66. {
  67. __published: // IDE-managed Components
  68. TPanel *PnlToolbar;
  69. TcxButton *BtnMapToJpg;
  70. TcxButton *BtnMoveMapToCenter;
  71. TcxButton *BtnZoomIn;
  72. TcxButton *BtnZoomOut;
  73. TcxButton *BtnRefresh;
  74. TcxButton *BtnMoveDefBounds;
  75. TcxButton *BtnZoomPrev;
  76. TcxButton *BtnZoomNext;
  77. TcxButton *BtnIconSelect;
  78. TcxLabel *lblGap1;
  79. TcxLabel *lblGap2;
  80. TSaveDialog *SaveDialog1;
  81. TWebBrowser *WebBrowser1;
  82. TPanel *PnlGisTool;
  83. TcxLabel *lblGap3;
  84. TPanel *PnlLoading;
  85. TPanel *PnlZoom;
  86. TcxCheckBox *ChkDrawCenter;
  87. TcxCheckBox *ChkDrawVms;
  88. TcxCheckBox *ChkDrawIncident;
  89. TcxCheckBox *ChkDrawVds;
  90. TcxCheckBox *ChkTrafficLayer;
  91. TGMMarker *GMMarker1;
  92. TTimer *TmrSelect;
  93. TGMMap *GMMap1;
  94. void __fastcall BtnMapToJpgClick(TObject *Sender);
  95. void __fastcall BtnMoveMapToCenterClick(TObject *Sender);
  96. void __fastcall GMMap1AfterPageLoaded(TObject *Sender, bool First);
  97. void __fastcall GMMap1BoundsChanged(TObject *Sender, TLatLngBounds *NewBounds);
  98. void __fastcall GMMap1ZoomChanged(TObject *Sender, int NewZoom);
  99. void __fastcall GMMap1DragEnd(TObject *Sender);
  100. void __fastcall BtnZoomInClick(TObject *Sender);
  101. void __fastcall BtnZoomOutClick(TObject *Sender);
  102. void __fastcall BtnZoomPrevClick(TObject *Sender);
  103. void __fastcall BtnZoomNextClick(TObject *Sender);
  104. void __fastcall BtnMoveDefBoundsClick(TObject *Sender);
  105. void __fastcall GMMap1CenterChanged(TObject *Sender, TLatLng *LatLng, double X,
  106. double Y);
  107. void __fastcall TmrSelectTimer(TObject *Sender);
  108. void __fastcall GMMap1DragStart(TObject *Sender);
  109. void __fastcall WebBrowser1DocumentComplete(TObject *ASender, const IDispatch *pDisp, OleVariant &URL);
  110. void __fastcall GMMap1MouseMove(TObject *Sender, TLatLng *LatLng, double X, double Y);
  111. void __fastcall BtnIconSelectClick(TObject *Sender);
  112. private: // User declarations
  113. void __fastcall SetLinkLevel(int ALinkLevel);
  114. int FLinkLevel;
  115. EXTENT_QUEUE FExtent; // 이전/다음 정보를 저장할 전역변수
  116. TMapExtent FPrev; // 이전
  117. bool FIsDragginStart;
  118. bool FIsDragginEnd;
  119. bool FIsDragging;
  120. public:
  121. TLatLng *FCenLatLng;
  122. TMapTypeId FMapTypeId;
  123. TLatLngBounds *FMapBounds;
  124. int FMapZoom;
  125. int FBaseZoom;
  126. double FCenterLat;
  127. double FCenterLng;
  128. TNotifyEvent FOnDrawFacilityClick;
  129. TNotifyEvent FOnZoomChanged;
  130. TNotifyEvent FOnBoundsChanged;
  131. TNotifyEvent FOnAfterPageLoaded;
  132. TNotifyEvent FOnFirstPageLoaded;
  133. bool FIsFirst;
  134. bool FMapStart;
  135. double FLat, FLng;
  136. public:
  137. void __fastcall LoadLocalSkin();
  138. void __fastcall LoadGisMap();
  139. void __fastcall ShowHideTrafficLayer(bool AShow);
  140. void __fastcall SelectObjectByPos(double dPosX, double dPosY, bool bArrow=false);
  141. bool __fastcall SelectLinkByPos(int X, int Y, String &ALinkId);
  142. bool __fastcall GetLevelLinkId(int ALinkLevel, String &sLinkId, int X, int Y);
  143. int __fastcall GetLayerIndex();
  144. void __fastcall SelGisItem(int AType, String AId);
  145. void __fastcall OnCloseQuery(bool &CanClose);
  146. bool __fastcall AddExtentQ(double ALat, double ALng, int FZoom);
  147. bool __fastcall PrevExtentQ();
  148. bool __fastcall NextExtentQ();
  149. void __fastcall RemoveMarker(TGMMarker *AMarker);
  150. public: // User declarations
  151. __fastcall TFRAMEGoogleMap(TComponent* Owner);
  152. __property int LinkLevel = {read = FLinkLevel, write=SetLinkLevel };
  153. };
  154. //---------------------------------------------------------------------------
  155. extern PACKAGE TFRAMEGoogleMap *FRAMEGoogleMap;
  156. //---------------------------------------------------------------------------
  157. #endif