Esempio n. 1
0
        /// <summary>
        /// 添加编辑点
        /// </summary>
        private void InitMarker()
        {
            var    pointDot    = circleArcMap.GetCenterDot();
            IPoint centerPoint = new PointClass()
            {
                X = pointDot.Lng, Y = pointDot.Lat
            };
            bool markerBeing = false;
            int  i           = 1;

            for (float ang = 0; ang <= 270; ang += 90)
            {
                var point = GetPointByDistanceAndAngle(circleArcMap.GetRadius(), centerPoint, ang);
                editPoint = new Model.EditMarker(mapControl, layer);
                markerList.Add(editPoint);
                if (!markerBeing)
                {
                    editPoint.MarkerMouseDownEvent += new Model.EditMarker.MarkerMouseDownDelegate(editPoint_MarkerMouseDownEvent);
                    editPoint.MarkerMouseMoveEvent += new Model.EditMarker.MarkerMouseMoveDelegate(editPoint_MarkerMouseMoveEvent);
                }
                editPoint.InitMarker(i.ToString(), point);
                (layer as CompositeGraphicsLayerClass).AddElement(editPoint, 0);
                markerBeing = true;
                i++;
            }
            editPoint    = new Model.EditMarker(mapControl, layer);
            centerMarker = new Model.EditMarker(mapControl, layer);
            editPoint.InitMarker("s", centerPoint);
            centerMarker = editPoint;
            (layer as CompositeGraphicsLayerClass).AddElement(editPoint, 0);
            mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, circleElement, null);
        }
Esempio n. 2
0
        public void it_should_add_a_single_battle_event()
        {
            var ds = CreateSample(30, null);

            var raceEvents = new List <OverlayData.RaceEvent>();

            var re = new RemovalEdits(raceEvents);
            var em = new EditMarker(re, InterestState.Battle);

            em.Start();
            re.Process(ds, 10.Seconds());

            em.Stop();
            re.Process(ds, 15.Seconds());

            Assert.That(raceEvents.Count, Is.EqualTo(1));

            var e = raceEvents.First();

            Assert.That(e, Is.EqualTo(new OverlayData.RaceEvent {
                StartTime = 10d,
                EndTime   = 15d,
                Interest  = InterestState.Battle
            }));
        }
Esempio n. 3
0
        /// <summary>
        /// 添加点
        /// </summary>
        private void InitMarker()
        {
            IPointCollection polygonPoint = polygonElement.Geometry as IPointCollection;
            IPoint           onePoint     = polygonPoint.get_Point(0);

            polygonPoint.AddPoint(onePoint);
            polygonElement.Geometry = polygonPoint as IGeometry;
            int  count       = polygonPoint.PointCount;
            bool markerBeing = false;

            for (int i = 0; i < count - 1; i++)
            {
                IPoint p = polygonPoint.get_Point(i);
                editPoint = new Model.EditMarker(mapControl, layer);
                markerList.Add(editPoint);
                if (!markerBeing)
                {
                    editPoint.MarkerMouseDownEvent += new Model.EditMarker.MarkerMouseDownDelegate(editPoint_MarkerMouseDownEvent);
                    editPoint.MarkerMouseMoveEvent += new Model.EditMarker.MarkerMouseMoveDelegate(editPoint_MarkerMouseMoveEvent);
                }
                editPoint.InitMarker(i.ToString(), p);
                (layer as CompositeGraphicsLayerClass).AddElement(editPoint, 0);
                markerBeing = true;
            }
        }
Esempio n. 4
0
        // 鼠标进入Marker事件
        private void gmapControl_OnMarkerEnter(GMapMarker item)
        {
            gmapControl.CanDragMap = false;

            editType         = circleMarker == item ? 0 : 1;
            currentEditPoint = item as EditMarker;
        }
Esempio n. 5
0
        /// <summary>
        /// 鼠标双击,完成测量
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gmapControl_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                // 加点
                var lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y);

                //加点
                marker = new EditMarker(lngLat);
                gmapOverlay.Markers.Add(marker);
                marker.ToolTipMode = MarkerTooltipMode.Always;
                marker.ToolTipText = string.Format("终点\n经度:{0}\n纬度:{1}\n", lngLat.Lng, lngLat.Lat);

                // 完成测量
                isFinish = true;
                if (CommondExecutedEvent != null)
                {
                    MessageEventArgs msg = new MessageEventArgs()
                    {
                        ToolType = ToolTypeEnum.Measure
                    };
                    CommondExecutedEvent(this, msg);
                }
            }
        }
        public RulePaceLaps(CameraControl cameraControl, EditMarker restartMarker, EditMarker battleMarker)
        {
            this.cameraControl = cameraControl;
            this.restartMarker = restartMarker;
            this.battleMarker  = battleMarker;

            wasUnderPaceCar = false;
        }
Esempio n. 7
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     ReleaseCommond();
     gmapControl = null;
     mapOverlay  = null;
     marker      = null;
     lineRoute   = null;
 }
Esempio n. 8
0
 void gmapControl_OnMarkerEnter(GMapMarker item)
 {
     currentPoint = item as EditMarker;
     if (currentPoint == null)
     {
         return;
     }
 }
 public RuleBattle(CameraControl cameraControl, EditMarker editMarker, TimeSpan cameraStickyPeriod, TimeSpan battleStickyPeriod, TimeSpan battleGap, double battleFactor)
 {
     this.cameraControl            = cameraControl;
     this.editMarker               = editMarker;
     this.battleStickyPeriod       = battleStickyPeriod;
     this.battleCameraChangePeriod = cameraStickyPeriod;
     this.battleGap    = battleGap;
     this.battleFactor = battleFactor;
 }
Esempio n. 10
0
 /// <summary>
 /// 点进入事件
 /// </summary>
 /// <param name="item"></param>
 private void gmapControl_OnMarkerEnter(GMapMarker item)
 {
     gmapControl.CanDragMap = false;
     if (item.Overlay.Id == overlay.Id)
     {
         CurrentPoint               = item as EditMarker;
         gmapControl.MouseDown     += gmapControl_MouseDownPoint;
         gmapControl.OnMarkerLeave += gmapControl_OnMarkerLeave;
     }
 }
Esempio n. 11
0
 /// <summary>
 /// 编辑点按下事件
 /// </summary>
 /// <param name="element"></param>
 /// <param name="e"></param>
 void editPoint_MarkerMouseDownEvent(IElement element, IMapControlEvents2_OnMouseDownEvent e)
 {
     if (element == null)
     {
         return;
     }
     currentPoint = new PointClass();
     currentPoint.PutCoords(e.mapX, e.mapY);
     currentMarker = element as Model.EditMarker;
 }
Esempio n. 12
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     ReleaseCommond();
     pointList   = null;
     PolygonName = string.Empty;
     gmapOverlay = null;
     gmapPolygon = null;
     marker      = null;
     layerName   = string.Empty;
 }
Esempio n. 13
0
        //鼠标进入marker事件
        private void mapControl_OnMarkerEnter(GMapMarker item)
        {
            EditMarker marker = item as EditMarker;

            if (!randomMarker.Equals(marker))
            {
                return;
            }
            editType = 0;
        }
Esempio n. 14
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     ReleaseCommond();
     CommondExecutedEvent = null;
     gmapControl          = null;
     mapOverlay           = null;
     lineRoute            = null;
     marker     = null;
     markerList = null;
 }
Esempio n. 15
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     ReleaseCommond();
     CommondExecutedEvent = null;
     gmapControl          = null;
     polygon        = null;
     editMarkerList = null;
     currentPoint   = null;
     overlay        = null;
     element        = null;
 }
Esempio n. 16
0
        /// <summary>
        /// 添加端点Marker
        /// </summary>
        private void AddMarker()
        {
            editMarkerList.Clear();

            for (int i = 0; i < polygon.Points.Count; i++)
            {
                EditMarker marker = new EditMarker(polygon.Points[i]);
                marker.Tag = "编辑点" + i;
                gmapControl.Overlays[0].Markers.Add(marker);
                editMarkerList.Add(marker);
            }
        }
Esempio n. 17
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     ReleaseCommond();
     CommondExecutedEvent = null;
     gmapControl          = null;
     circleMarker         = null;
     isLeftButtonDown     = false;
     currentEditPoint     = null;
     overlay       = null;
     circleElement = null;
     listPoints    = null;//存储坐标点
 }
Esempio n. 18
0
        /// <summary>
        /// 添加编辑点
        /// </summary>
        private void AddEditMarker()
        {
            listPoints.Clear();
            for (float ang = 0; ang <= 270; ang += 90)
            {
                var point = GetPointByDistanceAndAngle((float)radius, centerPoint, ang);
                listPoints.Add(point);//添加到集合

                EditMarker editMarker = new EditMarker(point);
                overlay.Markers.Add(editMarker);
                gmapControl.UpdateMarkerLocalPosition(editMarker);
            }
        }
Esempio n. 19
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     circleElement        = null;
     CommondExecutedEvent = null;
     layer         = null;
     currentMarker = null;
     currentPoint  = null;
     circleArcMap  = null;
     markerList    = null;
     centerMarker  = null;
     mapControl    = null;
     mapLogic      = null;
 }
Esempio n. 20
0
 /// <summary>
 /// 释放
 /// </summary>
 public void Dispose()
 {
     ReleaseCommond();
     CommondExecutedEvent = null;
     gmapControl          = null;
     route                = null;
     element              = null;
     overlay              = null;
     pointList            = null;
     CurrentPoint         = null;
     isMouseDown          = false;
     bIsEditDirectionLine = false;
 }
Esempio n. 21
0
        public RuleIncident(CameraControl cameraControl, RemovalEdits removalEdits, Incidents incidents, int limitDownTo)
        {
            this.editMarker    = removalEdits.For(InterestState.Incident);
            this.cameraControl = cameraControl;
            this.limitDownTo   = limitDownTo;

            nextIncident = incidents.GetEnumerator();
            nextIncident.MoveNext();
            if (nextIncident.Current != null)
            {
                TraceInfo.WriteLine("First incident at {0}", nextIncident.Current.StartSessionTime);
            }
        }
Esempio n. 22
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     ReleaseCommond();
     CommondExecutedEvent = null;
     endEdit();
     mapControl     = null;
     polygonElement = null;
     layer          = null;
     pointList      = null;
     currentMarker  = null;
     editPoint      = null;
     currentPoint   = null;
     markerList     = null;
 }
Esempio n. 23
0
 /// <summary>
 /// 执行命令
 /// </summary>
 public void RunCommond()
 {
     mapControl.CanDragMap = false;
     mapControl.Overlays.Add(overlay);
     mapControl.OnPolygonEnter += mapControl_OnPolygonEnter;
     mapControl.OnPolygonLeave += mapControl_OnPolygonLeave;
     mapControl.OnMarkerEnter  += mapControl_OnMarkerEnter;
     mapControl.OnMarkerLeave  += mapControl_OnMarkerLeave;
     mapControl.DoubleClick    += mapControl_DoubleClick;
     mapControl.KeyDown        += mapControl_KeyDown;
     mapControl.MouseDown      += mapControl_MouseDown;
     randomMarker = new EditMarker(Get270RandomPoint());
     overlay.Markers.Add(randomMarker);
 }
Esempio n. 24
0
 /// <summary>
 /// 执行操作
 /// </summary>
 public void RunCommond()
 {
     overlay = new GMapOverlay("edit_layer");
     for (int i = 0; i < route.Points.Count; i++)
     {
         EditMarker marker = new EditMarker(route.Points[i]);
         overlay.Markers.Add(marker);
         gmapControl.UpdateMarkerLocalPosition(marker);
     }
     gmapControl.Overlays.Add(overlay);
     Utils.bPublishEvent        = false;
     gmapControl.OnRouteEnter  += new RouteEnter(gmapControl_OnRouteEnter);
     gmapControl.DoubleClick   += gmapControl_DoubleClick;
     gmapControl.OnMarkerEnter += new MarkerEnter(gmapControl_OnMarkerEnter);
     gmapControl.KeyDown       += new KeyEventHandler(gmapControl_KeyDown);
 }
Esempio n. 25
0
        /// <summary>
        /// 设置编辑点
        /// </summary>
        /// <param name="editPoint">编辑点</param>
        public void SetEditPoint(MapLngLat editPoint)
        {
            bIsEditDirectionLine = true;
            editPointLatLng      = new PointLatLng(editPoint.Lat, editPoint.Lng);

            overlay.Markers.Clear();
            for (int i = 0; i < route.Points.Count; i++)
            {
                // 只添加当前编辑点
                if (editPointLatLng == route.Points[i])
                {
                    EditMarker marker = new EditMarker(route.Points[i]);
                    overlay.Markers.Add(marker);
                    gmapControl.UpdateMarkerLocalPosition(marker);
                    break;
                }
            }
        }
Esempio n. 26
0
 /// <summary>
 /// 鼠标按下,绘制第一个点,并注册鼠标移动事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void gmapControl_MouseDown(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left)
     {
         var lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y);
         if (index == 0)
         {
             //添加点
             MapLngLat point = new MapLngLat(lngLat.Lng, lngLat.Lat);
             marker             = new EditMarker(lngLat);
             marker.Tag         = "点";
             marker.ToolTipText = string.Format("起点\n经度:{0}\n纬度:{1}\n角度:{2}°", lngLat.Lng, lngLat.Lat, 0);
             marker.ToolTipMode = MarkerTooltipMode.Always;
             mapOverlay.Markers.Add(marker);
             //添加线
             KmlLineString linekml = new KmlLineString();
             linekml.Color = Color.Green;
             linekml.Width = 3;
             List <MapLngLat> pList = new List <MapLngLat>();
             pList.Add(new MapLngLat(lngLat.Lng, lngLat.Lat));
             pList.Add(new MapLngLat(lngLat.Lng, lngLat.Lat));
             linekml.PositionList = pList;
             lineRoute            = new Line_GMap("measure_Angle", linekml);
             mapOverlay.Routes.Add(lineRoute);
             pointList[0] = point;
             //注册移动事件
             gmapControl.MouseMove += new System.Windows.Forms.MouseEventHandler(gmapControl_MouseMove);
             index++;
         }
         else if (index == 1)
         {
             index++;
             gmapControl.MouseMove -= gmapControl_MouseMove;
             RegistCommandExcuteEvent();
             ReleaseCommond();//修改  陈静
         }
         else if (index == 2)
         {
             index = 0;
             mapOverlay.Markers.Remove(marker);
             mapOverlay.Routes.Remove(lineRoute);
         }
     }
 }
Esempio n. 27
0
        /// <summary>
        /// 鼠标双击,完成测量
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gmapControl_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                var lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y);
                marker = new EditMarker(lngLat);
                mapOverlay.Markers.Add(marker);
                double distance = lineRoute.Distance;
                distance           = Math.Round(distance, 3);
                marker.ToolTipMode = MarkerTooltipMode.Always;
                marker.ToolTipText = string.Format("终点\n经度:{0}\n纬度:{1}\n距离:{2}(公里)", lngLat.Lng, lngLat.Lat, distance);

                markerList.Add(marker);
                // 完成测量
                isFinish   = true;
                pointIndex = 0;
                RegistCommondExcuteEvent();
                ReleaseCommond();//修改  陈静
            }
        }
Esempio n. 28
0
        /// <summary>
        /// 鼠标单击,开始测量
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gmapControl_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                if (isFinish == true)
                {
                    ReleaseCommond();
                    return;
                }

                string name   = string.Format("point_{0}", pointIndex);
                var    lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y);

                if (pointIndex == 0)   // 第一个点生成面
                {
                    //加点
                    marker = new EditMarker(lngLat);
                    gmapOverlay.Markers.Add(marker);
                    //多边形
                    pointList.Add(lngLat);
                    gmapPolygon = new GMapPolygon(pointList, PolygonName);
                    gmapOverlay.Polygons.Add(gmapPolygon);
                    gmapControl.UpdatePolygonLocalPosition(gmapPolygon);
                    pointIndex++;
                }
                else//面对象生成以后添加面的点
                {
                    pointIndex++;

                    marker = new EditMarker(lngLat);
                    gmapOverlay.Markers.Add(marker);
                    pointList.Add(lngLat);
                    gmapPolygon.Points.Add(lngLat);
                    gmapControl.UpdatePolygonLocalPosition(gmapPolygon);
                }
            }
        }
Esempio n. 29
0
        /// <summary>
        /// 执行命令:画端点,在移动端点的时候改变多边形的形状
        /// </summary>
        public void RunCommond()
        {
            if (polygon == null)
            {
                return;
            }
            overlay = new GMapOverlay("draw_layer");
            for (int i = 0; i < polygon.Points.Count; i++)
            {
                EditMarker marker = new EditMarker(polygon.Points[i]);
                marker.Tag = "编辑点" + i;
                overlay.Markers.Add(marker);
                gmapControl.UpdateMarkerLocalPosition(marker);
            }

            gmapControl.Overlays.Add(overlay);
            Utils.bPublishEvent         = false;
            gmapControl.OnPolygonEnter += gmapControl_OnPolygonEnter;
            gmapControl.OnPolygonLeave += gmapControl_OnPolygonLeave;
            gmapControl.OnMarkerEnter  += gmapControl_OnMarkerEnter;
            gmapControl.DoubleClick    += gmapControl_DoubleClick;
            gmapControl.KeyDown        += new KeyEventHandler(gmapControl_KeyDown);
            gmapControl.MouseDown      += gmapControl_MouseDown;
        }
        public void it_should_add_a_single_battle_event()
        {
            var ds = CreateSample(30, null);

            var raceEvents = new List<OverlayData.RaceEvent>();

            var re = new RemovalEdits(raceEvents);
            var em = new EditMarker(re, InterestState.Battle);

            em.Start();
            re.Process(ds, 10.Seconds());

            em.Stop();
            re.Process(ds, 15.Seconds());

            Assert.That(raceEvents.Count, Is.EqualTo(1));

            var e = raceEvents.First();
            Assert.That(e, Is.EqualTo(new OverlayData.RaceEvent {
                StartTime = 10d,
                EndTime = 15d,
                Interest = InterestState.Battle
            }));
        }
Esempio n. 31
0
        /// <summary>
        /// 鼠标单击,开始测量
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gmapControl_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left && gmapControl.CanDragMap == false)
            {
                if (isFinish == true)
                {
                    foreach (var item in markerList)
                    {
                        mapOverlay.Markers.Remove(item);
                    }

                    mapOverlay.Routes.Remove(lineRoute);
                    isFinish = false;
                    //ReleaseCommond();
                    //return;
                }

                string name   = string.Format("point_{0}", pointIndex);
                var    lngLat = gmapControl.FromLocalToLatLng(e.X, e.Y);

                if (pointIndex == 0)   // 第一个点
                {
                    // 加点
                    marker             = new EditMarker(lngLat);
                    marker.ToolTipMode = MarkerTooltipMode.Always;
                    marker.ToolTipText = string.Format("起点\n经度:{0}\n纬度:{1}\n", Math.Round(lngLat.Lng, 6), Math.Round(lngLat.Lat, 6));
                    mapOverlay.Markers.Add(marker);
                    marker.ToolTip.Format.Alignment = StringAlignment.Near;

                    // 加线
                    KmlLineString linekml = new KmlLineString();
                    linekml.Color = Color.Green;
                    linekml.Width = 3;
                    List <MapLngLat> pList = new List <MapLngLat>();
                    pList.Add(new MapLngLat(lngLat.Lng, lngLat.Lat));
                    linekml.PositionList = pList;
                    lineRoute            = new Line_GMap("measure_line", linekml);
                    mapOverlay.Routes.Add(lineRoute);

                    pointIndex++;
                }
                else
                {
                    pointIndex++;

                    // 添加点
                    lineRoute.Points.Add(lngLat);
                    lineRoute.AddPoint(new MapLngLat(lngLat.Lng, lngLat.Lat));
                    gmapControl.Refresh();

                    // 添加Marker
                    marker = new EditMarker(lngLat);
                    mapOverlay.Markers.Add(marker);
                    distance           = lineRoute.Distance;
                    distance           = Math.Round(distance, 3);
                    marker.ToolTipMode = MarkerTooltipMode.Always;
                    marker.ToolTipText = string.Format("点{0}\n经度:{1}\n纬度:{2}\n距离:{3}(公里)", pointIndex, Math.Round(lngLat.Lng, 6), Math.Round(lngLat.Lat, 6), distance);
                    marker.ToolTip.Format.Alignment = StringAlignment.Near;
                }
                markerList.Add(marker);
            }
        }