/// <summary> /// 设置线的宽度 /// </summary> /// <param name="width"></param> /// <returns></returns> public bool SetWidth(float width) { this.width = width; int result = mapControl.MgsUpdateSymLineWidth(symbolName, width); Update(); return(result == 1 ? true : false); }
/// <summary> /// 设置轮廓宽度 /// </summary> /// <param name="size"></param> /// <returns></returns> public bool SetOutLineSize(float size) { int result = mapControl.MgsUpdateSymLineWidth(symbolName, size); this.width = size; Update(); 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 Line_Mgis(Kml kml, AxHOSOFTMapControl _mapControl) { this.mapControl = _mapControl; KmlLineString kmlLine = kml.Placemark.Graph as KmlLineString; if (kml.Placemark.Name == null || kmlLine.PositionList == null) { return; } this.symbolName = kml.Placemark.Name; this.listPoint = kmlLine.PositionList; int count = kmlLine.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)kmlLine.PositionList[i].Lng; vertex[2 * i + 1] = (float)kmlLine.PositionList[i].Lat; } Marshal.Copy(vertex, 0, ptrVert, vertex.Length); mapControl.MgsDrawLineSymByJBID(symbolName, 10, (ulong)(ptrVert.ToInt64()), count); Marshal.FreeHGlobal(ptrVert); mapControl.MgsUpdateSymColor(symbolName, kmlLine.Color.R, kmlLine.Color.G, kmlLine.Color.B, kmlLine.Color.A); mapControl.MgsUpdateSymLineWidth(symbolName, kmlLine.Width); Update();//刷新 this.ElementType = ElementTypeEnum.Line; this.width = kmlLine.Width; this.bOutLineColor = kmlLine.Color; flashTimer = new Timer(); flashTimer.Elapsed += new ElapsedEventHandler(flashTimer_Elapsed); flashTimer.Interval = 500; }