コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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;
        }