Ejemplo n.º 1
0
 /// <summary>
 /// 执行命令
 /// </summary>
 public void RunCommond()
 {
     if (marker == null)
     {
         return;
     }
     element.HightLight(true);
     Utils.bPublishEvent        = false;
     gmapControl.OnMarkerEnter += gmapControl_OnMarkerEnter;
     gmapControl.DoubleClick   += gmapControl_DoubleClick;
     gmapControl.KeyDown       += gmapControl_KeyDown;
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 鼠标双击事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void gmapControl_DoubleClick(object sender, EventArgs e)
 {
     ReleaseCommond();
     selectedElment.HightLight(false);
     foreach (var item in elementList)
     {
         item.HightLight(false);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 面点击事件
 /// </summary>
 /// <param name="item"></param>
 /// <param name="e"></param>
 void gmapControl_OnPolygonClick(GMapPolygon item, System.Windows.Forms.MouseEventArgs e)
 {
     selectedElment = mapLogic.GetElement(item.Tag.ToString());
     if (selectedElment == null)
     {
         return;
     }
     selectedElment.HightLight(!selectedElment.IsHightLight);
 }
Ejemplo n.º 4
0
        //弹起
        private void mapControl_eventLButtonUp(object sender, _DHOSOFTMapControlEvents_eventLButtonUpEvent e)
        {
            mapControl.eventLButtonUp -= mapControl_eventLButtonUp;
            if (e.x == startPoint.X && e.y == startPoint.Y)
            {
                return;
            }
            string objXml = "";

            if (startPoint.X < e.x)
            {
                if (startPoint.Y < e.y)
                {
                    //左右下
                    objXml = mapControl.pickupByRect(startPoint.X, startPoint.Y, e.x, e.y);
                }
                else
                {
                    //左右上
                    objXml = mapControl.pickupByRect(startPoint.X, e.y, e.x, startPoint.Y);
                }
            }
            else
            {
                if (startPoint.Y < e.y)
                {
                    //右左下
                    objXml = mapControl.pickupByRect(e.x, startPoint.Y, startPoint.X, e.y);
                }
                else
                {
                    //右左上
                    objXml = mapControl.pickupByRect(e.x, e.y, startPoint.X, startPoint.Y);
                }
            }

            if (string.IsNullOrEmpty(objXml))
            {
                return;
            }
            this.ClearSelectElements();//先清理列表

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(objXml);
            XmlNode nodes = xmlDoc.SelectSingleNode("root");

            foreach (XmlLinkedNode note in nodes.ChildNodes)
            {
                IMFElement element = this.mapLogic.GetElement(note.Attributes[0].Value + "");
                element.HightLight(true);
                this.AddElementtoList(element);
            }
            RegistCommondExecutedEvent();
        }
Ejemplo n.º 5
0
        // Marker点击事件
        private void gmapControl_OnMarkerClick(GMapMarker item, MouseEventArgs e)
        {
            IMFElement element = item as IMFElement;

            if (element == null)
            {
                return;
            }

            // 如果已经高亮,那判断是否是框选的高亮,如果是,则取消高亮,从而防止更改外部的高亮操作
            if (element.IsHightLight)
            {
                if (elementList.Contains(element))
                {
                    element.HightLight(false);
                    elementList.Remove(element);
                }
                return;
            }

            if (bIsMultiSelect)   // 多选
            {
                if (!elementList.Contains(element))
                {
                    elementList.Add(element);
                    element.HightLight(true);
                }
            }
            else                  // 单选
            {
                foreach (IMFElement ele in elementList)
                {
                    ele.HightLight(false);
                }
                elementList.Clear();

                element.HightLight(true);
                elementList.Add(element);
            }

            RegistCommondExcuteEvent();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 点点击事件
        /// </summary>
        /// <param name="item"></param>
        /// <param name="e"></param>
        void gmapControl_OnMarkerClick(GMapMarker item, System.Windows.Forms.MouseEventArgs e)
        {
            IMFElement element = mapLogic.GetElement(item.Tag.ToString());

            if (element == null)
            {
                return;
            }
            IMFElement el = elementList.Find(o => o.ElementName == element.ElementName);

            if (element.IsHightLight && el == null)
            {
                //他人高亮的
                return;
            }
            element.HightLight(!element.IsHightLight);

            if (selectedElment != null)
            {
                if (selectedElment != null && element.ElementName != selectedElment.ElementName)
                {
                    ClearNotSelecteMark();
                }
            }
            else
            {
                ClearNotSelecteMark();
            }

            if (element.IsHightLight) //已经高亮了
            {
                elementList.Add(element);
            }
            else//没有高亮
            {
                elementList.Remove(element);
            }

            selectedElment = element;
            if (CommondExecutedEvent != null)
            {
                MessageEventArgs msg = new MessageEventArgs()
                {
                    ToolType = ToolTypeEnum.Select
                };
                CommondExecutedEvent(this, msg);
            }
            //gmapControl.Focus();
        }
Ejemplo n.º 7
0
        //区域选择完成事件
        private void gmapControl_OnSelectionChange(global::GMap.NET.RectLatLng Selection, bool ZoomToFit)
        {
            if (flag)
            {
                return;
            }
            if (ZoomToFit)
            {
                return;
            }
            foreach (var item in elementList)
            {
                item.HightLight(false);
            }
            elementList.Clear();
            markerList = gmapControl.Overlays[0].Markers.ToList();
            foreach (var item in markerList)
            {
                if (Selection.Contains(item.Position) && gmapControl.DisableAltForSelection) //包含在矩形内
                {
                    IMFElement element = item as IMFElement;
                    IMFElement el      = elementList.Find(o => o.ElementName == element.ElementName);
                    if (elementList.Count > -1 && element.IsHightLight && el == null)
                    {
                        continue;
                    }
                    else
                    {
                        element.HightLight(true);//让选中的目标高亮
                        if (el == null)
                        {
                            elementList.Add(element);
                        }
                    }
                }
            }

            if (CommondExecutedEvent != null)
            {
                CommondExecutedEvent(this, null);
            }
            mapLogic.Refresh();
            flag = false;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 向列表中添加选中的图元
        /// </summary>
        /// <param name="element"></param>
        private void AddElementtoList(IMFElement element)
        {
            lock (elementObj)
            {
tip:
                if (selectElements != null)
                {
                    if (!selectElements.Contains(element))
                    {
                        element.HightLight(true);
                        selectElements.Add(element);
                    }
                }
                else
                {
                    selectElements = new List <IMFElement>();
                    goto tip;
                }
            }
        }