/// <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); }
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 })); }
/// <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; } }
// 鼠标进入Marker事件 private void gmapControl_OnMarkerEnter(GMapMarker item) { gmapControl.CanDragMap = false; editType = circleMarker == item ? 0 : 1; currentEditPoint = item as EditMarker; }
/// <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; }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { ReleaseCommond(); gmapControl = null; mapOverlay = null; marker = null; lineRoute = null; }
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; }
/// <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; } }
/// <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; }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { ReleaseCommond(); pointList = null; PolygonName = string.Empty; gmapOverlay = null; gmapPolygon = null; marker = null; layerName = string.Empty; }
//鼠标进入marker事件 private void mapControl_OnMarkerEnter(GMapMarker item) { EditMarker marker = item as EditMarker; if (!randomMarker.Equals(marker)) { return; } editType = 0; }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { ReleaseCommond(); CommondExecutedEvent = null; gmapControl = null; mapOverlay = null; lineRoute = null; marker = null; markerList = null; }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { ReleaseCommond(); CommondExecutedEvent = null; gmapControl = null; polygon = null; editMarkerList = null; currentPoint = null; overlay = null; element = null; }
/// <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); } }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { ReleaseCommond(); CommondExecutedEvent = null; gmapControl = null; circleMarker = null; isLeftButtonDown = false; currentEditPoint = null; overlay = null; circleElement = null; listPoints = null;//存储坐标点 }
/// <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); } }
/// <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; }
/// <summary> /// 释放 /// </summary> public void Dispose() { ReleaseCommond(); CommondExecutedEvent = null; gmapControl = null; route = null; element = null; overlay = null; pointList = null; CurrentPoint = null; isMouseDown = false; bIsEditDirectionLine = false; }
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); } }
/// <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; }
/// <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); }
/// <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); }
/// <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; } } }
/// <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); } } }
/// <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();//修改 陈静 } }
/// <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); } } }
/// <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 })); }
/// <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); } }