Example #1
0
 /// <summary>
 /// 鼠标左键双击
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void mapControl_eventLButtonDbClick(object sender, _DHOSOFTMapControlEvents_eventLButtonDbClickEvent e)
 {
     if (!isControl && listPoints.Count >= 2)
     {
         if (!string.IsNullOrEmpty(tempName))
         {
             mapControl.MgsDelObject(tempName);
         }
         //if (listPoints.Count < 2) return;
         Kml           kml  = new Kml();
         KmlLineString line = new KmlLineString();
         line.PositionList   = listPoints;
         line.Color          = System.Drawing.Color.Red;
         line.Width          = 3;
         kml.Placemark.Name  = "mgis_line" + Utils.ElementIndex;
         kml.Placemark.Graph = line;
         IMFElement element = null;
         layer.AddElement(kml, out element);
         lineElement = element as IMFLine;
         RegistCommondExecutedEvent();
         ReleaseCommond();//修改  陈静
         listPoints.Clear();
         isFinish = true;
     }
 }
Example #2
0
        /// <summary>
        /// 鼠标移动,实时绘制
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void mapControl_eventMouseMove(object sender, _DHOSOFTMapControlEvents_eventMouseMoveEvent e)
        {
            //if (isMouseDown && !isShift)
            //{
            //    double circleRadius = MapFrame.Core.Common.Utils.GetDistance(centerPoint, new MapLngLat(e.dLong, e.dLat));
            //    circleElement.UpdatePosition(circleRadius);
            //}
            if (isMouseDown && !isControl)
            {
                if (!string.IsNullOrEmpty(tempName))
                {
                    mapControl.MgsDelObject(tempName);
                }
                float[] vertex  = new float[4];
                IntPtr  ptrVert = Marshal.AllocHGlobal(sizeof(float) * 4);
                vertex[0] = (float)centerPoint.Lng;
                vertex[1] = (float)centerPoint.Lat;

                vertex[2] = (float)e.dLong;
                vertex[3] = (float)e.dLat;
                Marshal.Copy(vertex, 0, ptrVert, vertex.Length);
                tempName = mapControl.MgsDrawLine(16, (ulong)(ptrVert.ToInt64()), 2);
                Marshal.FreeHGlobal(ptrVert);
            }
        }
Example #3
0
        /// <summary>
        /// 移除图元
        /// </summary>
        /// <param name="element">图元对象</param>
        /// <param name="layerName">图元名称</param>
        /// <returns></returns>
        public bool RemoveElement(Core.Interface.IMFElement element, string layerName)
        {
            Circle_Mgis circleMgis = element as Circle_Mgis;

            return(mapControl.MgsDelObject(circleMgis.ElementName) == 1 ? true : false);
            //return mapControl.destroyMoveObject(Convert.ToUInt64(circleMgis.ElementPtr)) == 1 ? true : false;
        }
Example #4
0
        /// <summary>
        /// 绘制新的线图元
        /// </summary>
        /// <param name="listPoints"></param>
        /// <returns></returns>
        private bool DrawNewLine(List <MapLngLat> listPoints)
        {
            int count = listPoint.Count();

            if (count < 2)
            {
                return(false);
            }
            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.MgsDelObject(symbolName);//先删除掉原始线图元
            int temp = mapControl.MgsDrawLineSymByJBID(symbolName, 10, (ulong)(ptrVert.ToInt64()), count);

            mapControl.MgsUpdateSymColor(symbolName, bOutLineColor.R, bOutLineColor.G, bOutLineColor.B, bOutLineColor.A);
            mapControl.MgsUpdateSymLineWidth(symbolName, this.width);
            mapControl.update();
            //再添加一个新的线图元
            //int result = mapControl.MgsDrawLineByJBID(symbolName, 10, (ulong)(ptrVert.ToInt64()), count);
            Marshal.FreeHGlobal(ptrVert);
            return(temp == 0 ? true : false);
        }
Example #5
0
 /// <summary>
 /// 键盘按下事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void mapControl_eventKeyDown(object sender, _DHOSOFTMapControlEvents_eventKeyDownEvent e)
 {
     if (e.nChar == 27)
     {
         if (!isFinish)
         {
             if (!string.IsNullOrEmpty(tempName))
             {
                 mapControl.MgsDelObject(tempName);
             }
             isFinish = true;
         }
         else
         {
             ReleaseCommond();
         }
     }
     else if (e.nChar == 17)
     {
         isControl = true;
         mapControl.IMGS_WorkStation_SelectTool("GIS_TOOL_MAP_MOVE_HOSOFT");
     }
 }
Example #6
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);
        }
Example #7
0
        /// <summary>
        /// 删除指定线图元
        /// </summary>
        /// <param name="element">线图元</param>
        /// <param name="layerName">图元名称</param>
        /// <returns></returns>
        public bool RemoveElement(Core.Interface.IMFElement element, string layerName)
        {
            Line_Mgis lineMgis = element as Line_Mgis;

            return(mapControl.MgsDelObject(lineMgis.ElementPtr) == 0 ? true : false);
        }
Example #8
0
        /// <summary>
        /// 删除图元
        /// </summary>
        /// <param name="element"></param>
        /// <param name="layerName"></param>
        /// <returns></returns>
        public bool RemoveElement(Core.Interface.IMFElement element, string layerName)
        {
            Polygon_Mgis polygonMgis = element as Polygon_Mgis;

            return(mapControl.MgsDelObject(polygonMgis.ElementPtr) == 0 ? true : false);
        }
Example #9
0
        /// <summary>
        /// 删除指定文字图元
        /// </summary>
        /// <param name="element"></param>
        /// <param name="layerName"></param>
        /// <returns></returns>
        public bool RemoveElement(Core.Interface.IMFElement element, string layerName)
        {
            IMFText textMgis = element as IMFText;

            return(mapControl.MgsDelObject(textMgis.ElementPtr) == 0 ? true : false);
        }