/// <summary> /// 设置填充色 /// </summary> /// <param name="fillColor"></param> /// <returns></returns> public bool SetFillColor(int fillColor) { Color color = Color.FromArgb(fillColor); int result = mapControl.MgsUpdateSymFillColor(symbolName, color.R, color.G, color.B, color.A); Update(); this.bFillColor = color; return(result == 1 ? true : false); }
/// <summary> /// 绘制更新的图元 /// </summary> /// <param name="listPoint"></param> private void DrawNewCircle(List <MapLngLat> listPoint) { 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); mapControl.MgsDelObject(symbolName);//先删除掉原始线图元 //再添加一个新的线图元 mapControl.MgsDrawLineSymByJBID(symbolName, 16, (ulong)(ptrVert.ToInt64()), 2); mapControl.MgsUpdateSymColor(symbolName, bOutLineColor.R, bOutLineColor.G, bOutLineColor.B, bOutLineColor.A); mapControl.MgsUpdateSymFillColor(symbolName, bFillColor.R, bFillColor.G, bFillColor.B, bFillColor.A); mapControl.MgsUpdateSymLineWidth(symbolName, this.width); Update();//刷新 Marshal.FreeHGlobal(ptrVert); }
/// <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 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; }