/// <summary> /// Rotates the first feature in the cityLimits layer and displays the result on the map. /// </summary> private void RotateShape_OnClick(object sender, EventArgs e) { LayerOverlay layerOverlay = (LayerOverlay)mapView.Overlays["layerOverlay"]; ShapeFileFeatureLayer cityLimits = (ShapeFileFeatureLayer)layerOverlay.Layers["cityLimits"]; InMemoryFeatureLayer rotatedLayer = (InMemoryFeatureLayer)layerOverlay.Layers["rotatedLayer"]; // Query the cityLimits layer to get all the features cityLimits.Open(); var features = cityLimits.QueryTools.GetAllFeatures(ReturningColumnsType.NoColumns); cityLimits.Close(); // Rotate the first feature using it's center point as the anchor var rotate = AreaBaseShape.Rotate(features[0], features[0].GetShape().GetCenterPoint(), Convert.ToSingle(rotateDegree.Text)); // Add the rotated shape into rotatedLayer to display the result. // If this were to be a permanent change to the cityLimits FeatureSource, you would modify the underlying data using BeginTransaction and CommitTransaction instead. rotatedLayer.InternalFeatures.Clear(); rotatedLayer.InternalFeatures.Add(new Feature(rotate)); // Redraw the layerOverlay to see the rotated feature on the map layerOverlay.Refresh(); }