/// <summary> /// Scales the first feature in the cityLimits layer and displays the result on the map. /// </summary> private void ScaleShape_OnClick(object sender, EventArgs e) { LayerOverlay layerOverlay = (LayerOverlay)mapView.Overlays["layerOverlay"]; ShapeFileFeatureLayer cityLimits = (ShapeFileFeatureLayer)layerOverlay.Layers["cityLimits"]; InMemoryFeatureLayer scaledLayer = (InMemoryFeatureLayer)layerOverlay.Layers["scaledLayer"]; // Query the cityLimits layer to get all the features cityLimits.Open(); var features = cityLimits.QueryTools.GetAllFeatures(ReturningColumnsType.NoColumns); cityLimits.Close(); // Scale the first feature by the scaleFactor TextBox on the UI var scale = AreaBaseShape.ScaleTo(features[0].GetShape(), Convert.ToSingle(scaleFactor.Text)); // Add the scaled shape into scaledLayer 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. scaledLayer.InternalFeatures.Clear(); scaledLayer.InternalFeatures.Add(new Feature(scale)); // Redraw the layerOverlay to see the scaled feature on the map layerOverlay.Refresh(); }