/// <summary> /// 构造函数 /// </summary> /// <param name="mapObject">地图对象</param> /// <param name="_mapLogic">地图逻辑类</param> public ToolBox(object mapObject, IMapLogic _mapLogic) { mapLogic = _mapLogic; mapControl = mapObject as AxHOSOFTMapControl; //measureDistanceTool = new MeasureDistance(gmapControl); //measureAreaTool = new MeasureArea(gmapControl); //measureAngleTool = new MeasureAngle(gmapControl); //selectTool = new SelectElementEx(gmapControl, _mapLogic); }
/// <summary> /// 释放 /// </summary> public void Dispose() { ReleaseCommond(); CommondExecutedEvent = null; moveObj = 0; element = null; mapControl = null; keyDown = false; }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { mapControl = null; mapLogic = null; isFinish = false; isControl = false; circleElement = null; centerPoint = null; layer = null; }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { listPoints.Clear(); listPoints = null; tempName = string.Empty; polygonElement = null; mapLogic = null; mapControl = null; isFinish = false; isControl = false; }
/// <summary> /// 释放工具 /// </summary> public void Dispose() { ReleaseCommond(); selectElements.Clear(); selectElements = null; elementObj = new object(); moveObj = 0; mapControl = null; CommondExecutedEvent = null; mapLogic = null; }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { listPoints.Clear(); listPoints = null; mapControl = null; lineElement = null; isFinish = false; isControl = false; layer = null; mapLogic = null; }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { if (textCtrl != null) { textCtrl.Dispose(); } downPoint = null; isControl = true; textElement = null; mapLogic = null; layer = null; mapControl = null; }
/// <summary> /// 初始化地图控件 /// </summary> private void InitMapControl() { this.axMapControl = new AxHOSOFTMapControlLib.AxHOSOFTMapControl(); ((System.ComponentModel.ISupportInitialize)(this.axMapControl)).BeginInit(); this.axMapControl.Dock = System.Windows.Forms.DockStyle.Fill; this.axMapControl.Enabled = true; this.axMapControl.Location = new System.Drawing.Point(0, 25); this.axMapControl.Name = "axHOSOFTMapControl1"; //this.axHOSOFTMapControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axHOSOFTMapControl1.OcxState"))); this.axMapControl.Size = new System.Drawing.Size(638, 463); this.axMapControl.TabIndex = 1; ((System.ComponentModel.ISupportInitialize)(this.axMapControl)).EndInit(); }
/// <summary> /// 构造函数 /// </summary> /// <param name="kml">kml对象</param> /// <param name="_mapControl">地图控件</param> public Circle_Mgis(Kml kml, AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; KmlCircle kmlCircle = kml.Placemark.Graph as KmlCircle; if (kmlCircle.Position == null || kmlCircle.RandomPosition == null || kml.Placemark.Name == string.Empty) { return; } listPoint = new List <MapLngLat>(); listPoint.Add(kmlCircle.Position); listPoint.Add(kmlCircle.RandomPosition); float[] vertex = new float[4]; IntPtr ptrVert = Marshal.AllocHGlobal(sizeof(float) * 4); vertex[0] = (float)listPoint[0].Lng; vertex[1] = (float)listPoint[0].Lat; vertex[2] = (float)listPoint[1].Lng; vertex[3] = (float)listPoint[1].Lat; Marshal.Copy(vertex, 0, ptrVert, vertex.Length); this.symbolName = kml.Placemark.Name; mapControl.MgsDrawLineSymByJBID(symbolName, 16, (ulong)(ptrVert.ToInt64()), 2); mapControl.MgsUpdateSymFillColor(symbolName, kmlCircle.FillColor.R, kmlCircle.FillColor.G, kmlCircle.FillColor.B, kmlCircle.FillColor.A); mapControl.MgsUpdateSymColor(symbolName, kmlCircle.StrokeColor.R, kmlCircle.StrokeColor.G, kmlCircle.StrokeColor.B, kmlCircle.StrokeColor.A); mapControl.MgsUpdateSymLineWidth(symbolName, kmlCircle.StrokeWidth); //轮廓大小 mapControl.update(); //刷新 Marshal.FreeHGlobal(ptrVert); this.ElementType = ElementTypeEnum.Circle; bFillColor = kmlCircle.FillColor; //填充颜色 bOutLineColor = kmlCircle.StrokeColor; //轮廓颜色 this.width = kmlCircle.StrokeWidth; //轮廓大小 flashTimer = new Timer(); flashTimer.Elapsed += new ElapsedEventHandler(flashTimer_Elapsed); flashTimer.Interval = 500; }
/// <summary> /// 构造函数 /// </summary> /// <param name="kml">kml 对象</param> /// <param name="_mapControl">地图控件</param> public Text_Mgis(Kml kml, AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; KmlText kmlText = kml.Placemark.Graph as KmlText; if (kml.Placemark.Name == null || kmlText.Content == string.Empty) { return; } this.symbolName = kml.Placemark.Name; this.textPosition = kmlText.Position; this.context = kmlText.Content; System.Drawing.Color c = kmlText.Color; mapControl.MgsDrawSymTextByJBID(symbolName, context, (float)kmlText.Position.Lng, (float)kmlText.Position.Lat); mapControl.MgsUpdateSymSize(symbolName, (float)kmlText.Size); mapControl.MgsUpdateSymColor(symbolName, c.R, c.G, c.B, c.A); mapControl.update(); this.ElementType = ElementTypeEnum.Text; flashTimer = new Timer(); flashTimer.Elapsed += new ElapsedEventHandler(flashTimer_Elapsed); flashTimer.Interval = 500; }
/// <summary> /// 构造函数 /// </summary> /// <param name="kml">Kml对象</param> /// <param name="_mapControl">地图控件</param> public Polygon_Mgis(Kml kml, AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; MapFrame.Core.Model.KmlPolygon kmlPolygon = kml.Placemark.Graph as MapFrame.Core.Model.KmlPolygon; if (kml.Placemark.Name == null || kmlPolygon.PositionList == null) { return; } this.symbolName = kml.Placemark.Name; this.listPoint = kmlPolygon.PositionList; int count = kmlPolygon.PositionList.Count; float[] vertex = new float[count * 2]; IntPtr ptrVert = Marshal.AllocHGlobal(sizeof(float) * count * 2); for (int i = 0; i < count; i++) { vertex[2 * i] = (float)listPoint[i].Lng; vertex[2 * i + 1] = (float)listPoint[i].Lat; } Marshal.Copy(vertex, 0, ptrVert, vertex.Length); mapControl.MgsDrawLineSymByJBID(symbolName, 11, (ulong)(ptrVert.ToInt64()), count); mapControl.MgsUpdateSymFillColor(symbolName, kmlPolygon.FillColor.R, kmlPolygon.FillColor.G, kmlPolygon.FillColor.B, kmlPolygon.FillColor.A); mapControl.MgsUpdateSymColor(symbolName, kmlPolygon.OutLineColor.R, kmlPolygon.OutLineColor.G, kmlPolygon.OutLineColor.B, kmlPolygon.OutLineColor.A); mapControl.update();//刷新 Marshal.FreeHGlobal(ptrVert); this.ElementType = ElementTypeEnum.Polygon; this.bFillColor = kmlPolygon.FillColor; this.bOutLineColor = kmlPolygon.OutLineColor; this.width = kmlPolygon.OutLineSize; flashTimer = new Timer(); flashTimer.Elapsed += new ElapsedEventHandler(flashTimer_Elapsed); flashTimer.Interval = 500; }
/// <summary> /// 构造函数 /// </summary> /// <param name="_mapObject">地图对象</param> public FactoryMgis(object _mapObject) { moveLnglat = new MapLngLat(); if (_mapObject != null) { this.axMapControl = _mapObject as AxHOSOFTMapControl; } else { InitMapControl(); } axMapControl.eventInitFinish += new _DHOSOFTMapControlEvents_eventInitFinishEventHandler(axMapControl_eventInitFinish); axMapControl.eventKeyDown += new _DHOSOFTMapControlEvents_eventKeyDownEventHandler(axMapControl_eventKeyDown); axMapControl.eventKeyUp += new _DHOSOFTMapControlEvents_eventKeyUpEventHandler(axMapControl_eventKeyUp); axMapControl.eventLButtonDbClick += new _DHOSOFTMapControlEvents_eventLButtonDbClickEventHandler(axMapControl_eventLButtonDbClick); axMapControl.eventLButtonDown += new _DHOSOFTMapControlEvents_eventLButtonDownEventHandler(axMapControl_eventLButtonDown); axMapControl.eventLButtonUp += new _DHOSOFTMapControlEvents_eventLButtonUpEventHandler(axMapControl_eventLButtonUp); axMapControl.eventMouseMove += new _DHOSOFTMapControlEvents_eventMouseMoveEventHandler(axMapControl_eventMouseMove); axMapControl.eventRButtonDbClick += new _DHOSOFTMapControlEvents_eventRButtonDbClickEventHandler(axMapControl_eventRButtonDbClick); axMapControl.eventRButtonDown += new _DHOSOFTMapControlEvents_eventRButtonDownEventHandler(axMapControl_eventRButtonDown); axMapControl.eventRButtonUp += new _DHOSOFTMapControlEvents_eventRButtonUpEventHandler(axMapControl_eventRButtonUp); pointFac = new PointFactory(axMapControl); pictureFac = new PictureFactory(axMapControl); circleFac = new CircleFactory(axMapControl); lineFac = new LineFactory(axMapControl); polygonFac = new PolygonFactory(axMapControl); textFac = new TextFactory(axMapControl); lyMgr = new LayerManager(axMapControl); lyMgr.RefreshMapDelegate += Refresh; refreshTimer = new System.Timers.Timer(); refreshTimer.Interval = 100; refreshTimer.Elapsed += refreshTimer_Elapsed; }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { mapControl = null; BelongLayer = null; }
/// <summary> /// 构造函数 /// </summary> /// <param name="_mapControl"></param> public DrawCircle(AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; }
/// <summary> /// 构造函数 /// </summary> /// <param name="_mapControl"></param> public DrawText(AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; }
/// <summary> /// 构造函数 /// </summary> /// <param name="_mapControl"></param> public CircleFactory(AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; }
/// <summary> /// 构造函数 /// </summary> /// <param name="_mapControl">地图控件</param> public LayerManager(AxHOSOFTMapControl _mapControl) { mapControl = _mapControl; layerDic = new Dictionary <string, ulong>(); }
/// <summary> /// 构造函数 /// </summary> /// <param name="_mapControl"></param> public PointFactory(AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; }
/// <summary> /// 构造函数 /// </summary> /// <param name="_mapControl"></param> /// <param name="_mapLogic">图层管理</param> public SelectElement(AxHOSOFTMapControl _mapControl, IMapLogic _mapLogic) { this.mapLogic = _mapLogic; this.mapControl = _mapControl; selectElements = new List <IMFElement>(); }
/// <summary> /// 构造函数 /// </summary> /// <param name="_mapControl"></param> public LineFactory(AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; }
/// <summary> /// 图片工厂 /// </summary> /// <param name="_mapControl">地图控件</param> public PictureFactory(AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; }
/// <summary> /// 构造函数 /// </summary> /// <param name="_mapControl"></param> public DrawLine(AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; listPoints = new List <MapLngLat>(); }
/// <summary> /// 构造函数 /// </summary> /// <param name="_mapControl">地图对象</param> /// <param name="_element">要编辑的图元</param> public EditPoint(AxHOSOFTMapControl _mapControl, IMFElement _element) { this.element = _element; this.moveObj = Convert.ToUInt64(_element.ElementPtr); this.mapControl = _mapControl; }