private void HighlightSelectedLines(DataGridView activeDataGridView, MapImage activeMap) { List <Geometry> geomsToHighlight = new List <Geometry>(); // Create the new "ToHighlight" vector layer and remove the old one from the map. VectorLayer toHighlight = new VectorLayer("HighlightedLines"); int iRemoveIndex = activeMap.Map.Layers.FindIndex(delegate(SharpMap.Layers.ILayer layer) { return(layer.LayerName == "HighlightedLines"); }); if (iRemoveIndex > -1) { activeMap.Map.Layers.RemoveAt(iRemoveIndex); } // Loop through the selected values only and add them to the geom collection to highlight. // Then add that layer to the map. foreach (DataGridViewRow linestringToHighlight in activeDataGridView.SelectedRows) { if (linestringToHighlight.Cells["LINESTRING"].Value != null && linestringToHighlight.Cells["LINESTRING"].Value.ToString() != "") { Geometry geomToHighlight = Geometry.GeomFromText(linestringToHighlight.Cells["LINESTRING"].Value.ToString()); geomToHighlight.Color = Color.Cyan; geomToHighlight.Width_ = 5; geomsToHighlight.Add(geomToHighlight); } } toHighlight.DataSource = new GeometryProvider(geomsToHighlight); activeMap.Map.Layers.Insert(0, toHighlight); activeMap.Refresh(); activeMap.Map.ZoomToExtents(); }
protected override void OnClick() { var bufZonesLayer = new BufZonesLayer { IsAVR = m_MapImage.Parent is AvrMapControl }; if (bufZonesLayer.ShowDialog() == DialogResult.OK) { try { var eidssUserBufZoneLayer = UserDbLayersManager.CreateBufZoneLayer(bufZonesLayer.ZoneLayerName, bufZonesLayer.Description, bufZonesLayer.PivotalLayer); //MapImage.Map.Layers.Add(eidssUserBufZoneLayer); if (OnCreateBufZone != null) { OnCreateBufZone(new KeyValuePair <Guid, string>(eidssUserBufZoneLayer.LayerDbGuid, eidssUserBufZoneLayer.LayerName)); } //MapControl.RefreshContent(); MapImage.Refresh(); //ZoneLayerStorage.UpdateZoneLayerDict(); //not need more } catch (Exception ex) { ErrorForm.ShowError(ex); } } }
public void ZoomExtents() { if (HasLayers()) { _mapImage.Map.ZoomToExtents(); _mapImage.Refresh(); } }
void MapImage_MouseDown(Point worldPos, MouseEventArgs e) { string strName; var geom = GetArealGeom(worldPos, out strName); if (geom == null) { return; } //show form PolygonBufZone frm = new PolygonBufZone { ZoneName = strName }; if (frm.ShowDialog() == DialogResult.OK) { if (m_PivotalProvider == null) { return; } if (m_TargetLayerGuid == Guid.Empty) { return; } var eidssUserBufZoneLayer = (EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_TargetLayerGuid); if (eidssUserBufZoneLayer == null) { return; } var userBufZone = new EidssUserBufZoneLayer.UserBufZone { Geometry = geom, Description = frm.Description, Name = frm.ZoneName, Center = new Point(0, 0) }; eidssUserBufZoneLayer.AddNewZone(userBufZone); MapImage.Refresh(); //UserDbFeature userDbFeature = new UserDbFeature(frm.Name, frm.Description, geom); //DataProvider.AddUserFeature(userDbFeature); //MapImage.Refresh(); } }
void m_MapImage_MouseUp(SharpMap.Geometries.Point worldPos, MouseEventArgs imagePos) { if (m_IsShifting && m_IsMoveMode && imagePos.Button == MouseButtons.Left) { //stop shifting m_IsShifting = false; //save last shift-position into buffer zone var zone = m_BufZoneLayer.FeatureRowToStruct(m_SelectedFeature); var deltaX = worldPos.X - m_ShiftBeginPnt.X; var deltaY = worldPos.Y - m_ShiftBeginPnt.Y; if (zone.Radius > 0) { //circle zone.Center.X = zone.Center.X + deltaX; zone.Center.Y = zone.Center.Y + deltaY; zone.Geometry = GIS_V4.Utils.GeometryUtils.CreateBuffer(zone.Center, zone.Radius); m_BufZoneLayer.UpdateZone(zone); m_SelectedFeature.Geometry = zone.Geometry; m_SelectedFeature["dblCenterX"] = zone.Center.X; m_SelectedFeature["dblCenterY"] = zone.Center.Y; } else { //polygon if (m_SelectedFeature.Geometry is Polygon) { var geom = (Polygon)m_SelectedFeature.Geometry; //foreach (var vertex in geom.ExteriorRing.Vertices) //{ // vertex.X = vertex.X + deltaX; // vertex.Y = vertex.Y + deltaY; //} zone.Geometry = new Polygon(geom.ExteriorRing); m_SelectedFeature.Geometry = zone.Geometry; m_BufZoneLayer.UpdateZone(zone); } } MapImage.Refresh(); } }
void MapImage_MouseDown(Point worldPos, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { var circleBufZone = new CircleBufZone(); if (circleBufZone.ShowDialog() == DialogResult.OK) { if (m_TargetLayerGuid == Guid.Empty) { return; } var projectedCenter = worldPos; var projectedBufGeom = GIS_V4.Utils.GeometryUtils.CreateBuffer(projectedCenter, circleBufZone.Radius); //var geom = GeometryTransform.TransformGeometry(projectedBufGeom, CoordinateSystems.SphericalMercatorCS, // CoordinateSystems.WGS84); //var center = GeometryTransform.TransformGeometry(projectedCenter, CoordinateSystems.SphericalMercatorCS, // CoordinateSystems.WGS84); if (m_TargetLayerGuid == Guid.Empty) { return; } var eidssUserBufZoneLayer = (EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_TargetLayerGuid); if (eidssUserBufZoneLayer == null) { return; } var userBufZone = new EidssUserBufZoneLayer.UserBufZone { Geometry = projectedBufGeom, //geom, Description = circleBufZone.Description, Name = circleBufZone.ZoneName, Center = projectedCenter, //center, Radius = circleBufZone.Radius }; eidssUserBufZoneLayer.AddNewZone(userBufZone); MapImage.Refresh(); } circleBufZone.Dispose(); } }
private void DeleteSelected() { var msg = EidssMessages.GetForCurrentLang("gis_Message_DelZone", "Would you like to delete selected buffer zone?"); var caption = EidssMessages.GetForCurrentLang("gis_Caption_DelZone", "Delete buffer zone"); if (MessageForm.Show(msg, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { if (m_SelectedFeature != null) { //MapImage.Cursor = Cursors.WaitCursor; if (!m_IsMoveMode) { ((EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_TargetLayerGuid)).DeleteZone( (long)m_SelectedFeature["idfsGeoObject"]); } else { ((EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_LastMovedTargetLayerGuid)).DeleteZone( (long)m_SelectedFeature["idfsGeoObject"]); } m_SelectedFeature = null; if (m_IsMoveMode) { m_MiApplyMovement.Visible = false; m_MiCancelMovement.Visible = false; m_MiMove.Visible = true; } if (UserDbLayersManager.GetLayerMetadata(m_TargetLayerGuid).m_PivotalLayer != PivotLayerType.None) { m_MiMove.Visible = false; } m_IsMoveMode = false; m_MapImage.CommandToolPress -= m_MapImage_CommandToolPress; //MapImage.Cursor = Cursors.Default; MapImage.Refresh(); } } }
void MapImage_MouseDoubleClick(object sender, MouseEventArgs e) { if (m_ToolPhase == ToolPhase.WaitFirst) { return; } //if (DataProvider == null) NoDataProvider(); //compleate polygon if (m_Vertices.Count < 3) { return; } m_Vertices.Add(m_Vertices[0]); var linearRing = new LinearRing(m_Vertices); Geometry polygon = new Polygon(linearRing); //polygon = GeometryTransform.TransformGeometry(polygon, CoordinateSystems.SphericalMercatorCS, // CoordinateSystems.WGS84); m_ToolPhase = ToolPhase.WaitFirst; var connectionString = ConnectionManager.DefaultInstance.ConnectionString; var connection = new SqlConnection(connectionString); var valid = SqlExecHelper.SqlGeometryValidation(connection, polygon); if (!valid) { MessageForm.Show(Resources.gis_MtIndependentPolygonBufferZone_CheckValidityMsg); } else { //show form var frm = new PolygonBufZone(); //frm.ZoneLayer = string.Empty; if (frm.ShowDialog() == DialogResult.OK) { if (m_TargetLayerGuid == Guid.Empty) { return; } var eidssUserBufZoneLayer = (EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_TargetLayerGuid); if (eidssUserBufZoneLayer == null) { return; } var userBufZone = new EidssUserBufZoneLayer.UserBufZone { Geometry = polygon, Description = frm.Description, Name = frm.ZoneName, //Center = new Point(0, 0) }; eidssUserBufZoneLayer.AddNewZone(userBufZone); } } MapImage.Refresh(); m_Vertices.Clear(); m_Points.Clear(); m_LastMousePosition = System.Drawing.Point.Empty; }
/// <summary> /// 命令执行 /// </summary> /// <param name="map"></param> /// <param name="tree"></param> public void Execute(MapImage map, MyTree tree) { string[] commandlist = null; lock (Command.CommandList) { commandlist = new string[Command.CommandList.Count]; Command.CommandList.CopyTo(commandlist); Command.CommandList.Clear(); } foreach (string cmd in commandlist) { string[] list = cmd.Split(','); if (list.Length < 2) { return; } decimal mapid = GetId(list[1]); if (mapid != map.Map.MapId) { continue; } if (list[0] == CommandType.OptionType.CHANGE_MAP_NAME.ToString()) { ChangeMapName(map, tree, list); } else if (list[0] == CommandType.OptionType.ADD_LAYER.ToString()) { AddLayer(map, tree, list); } else if (list[0] == CommandType.OptionType.CHANGE_LAYER_NAME.ToString()) { ChangeLayerName(map, tree, list); } else if (list[0] == CommandType.OptionType.DELETE_LAYER.ToString()) { DeleteLayer(map, tree, list); } else if (list[0] == CommandType.OptionType.ADD_OBJECT.ToString()) { AddObject(map, tree, list); } else if (list[0] == CommandType.OptionType.CHANGE_OBJECT_NAME.ToString()) { ChangeObjectName(map, tree, list); } else if (list[0] == CommandType.OptionType.DELETE_OBJECT.ToString()) { DeleteObject(map, tree, list); } else if (list[0] == CommandType.OptionType.DRAW_PHOTO_DATA.ToString()) { List <decimal> maplist = new List <decimal>(); for (int i = 1; i < list.Length; i++) { decimal id = 0; if (decimal.TryParse(list[i], out id)) { maplist.Add(id); } } } else if (list[0] == CommandType.OptionType.GET_DEMO_FLAG.ToString()) { SqlHelper.IsDemo = list[1] != "100"; } } if (commandlist.Length > 0) { map.Refresh(); if (SetToolBarStatus != null) { SetToolBarStatus(); } } }
void MapImage_MouseDown(Point worldPos, MouseEventArgs e) { switch (PivotalType) { case PivotLayerType.Settlements: m_PivotalProvider = new EidssSqlServer2008(SystemLayerNames.Settlements); break; case PivotLayerType.AvrPoints: if (Content.AVRLayer != null) { m_PivotalProvider = Content.AVRLayer.DataSource; } break; default: m_PivotalProvider = null; break; } string strName; var nearestPoint = GetNearestPoint(worldPos, out strName); if (nearestPoint == null) { return; } //show form var frm = new CircleBufZone { ZoneName = strName }; if (frm.ShowDialog() == DialogResult.OK) { if (m_PivotalProvider == null) { return; } var projectedCenter = nearestPoint; //var projectedCenter = GeometryTransform.TransformGeometry(nearestPoint, CoordinateSystems.WGS84, // CoordinateSystems.SphericalMercatorCS); var projectedBufGeom = GIS_V4.Utils.GeometryUtils.CreateBuffer(projectedCenter, frm.Radius); //var geom = GeometryTransform.TransformGeometry(projectedBufGeom, CoordinateSystems.SphericalMercatorCS, // CoordinateSystems.WGS84); //var center = GeometryTransform.TransformGeometry(projectedCenter, CoordinateSystems.SphericalMercatorCS, // CoordinateSystems.WGS84); if (m_TargetLayerGuid == Guid.Empty) { return; } var eidssUserBufZoneLayer = (EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_TargetLayerGuid); if (eidssUserBufZoneLayer == null) { return; } var userBufZone = new EidssUserBufZoneLayer.UserBufZone { Geometry = projectedBufGeom, //geom, Description = frm.Description, Name = frm.ZoneName, Center = projectedCenter, //center, Radius = frm.Radius }; eidssUserBufZoneLayer.AddNewZone(userBufZone); MapImage.Refresh(); } }