ThinkGeo.com    |     Documentation    |     Premium Support

Show area and radius on selecting / editing a circle

Hi,

I am displaying the area and radius of a circle when I edit it on the map using the following:






Feature feature= wpfMap1.EditOverlay.EditShapesLayer.InternalFeatures[0];
 
                double area = 0;
                double radius = 0;
                double pi = 3.1416;
                if (feature.GetShape() is AreaBaseShape)
                {
                    area += (feature.GetShape() as AreaBaseShape).GetArea(GeographyUnit.Meter, AreaUnit.SquareMeters);
                    radius = System.Math.Sqrt(area / pi);
                }
                txtRadius.Text = "Radius: " string.Format(CultureInfo.InvariantCulture, "{0:N3} {1}", radius, "Mtrs");

Since I am just checking whether the shape is an AreaBaseShape, the radius shows for all kinds of area shapes, like polygon areas. I want to limit this to circles alone. How do I do that?



Thanks,

Jacob

Hi Jacob, 
  
 In fact the circle is saved as polygon. 
  
 So as blow should be the solution: 
  
 1. When you draw a new circle or import circles, save a special value in the column value of feature. 
 2. When you edit a feature, find this value and see whether it should be a circle. 
  
 Wish that’s helpful. 
  
 Regards, 
  
 Don

Hi Don, 
 Would that be a proper solution, I doubt. Suppose I create a circle and save a value to identify it as a circle, but later edits the geometry to some other shape, wont it still show that it is a circle? 
 Regards, 
 Jacob

Hi Jacob, 
  
 Why you want to change the circle to some other shapes? I meant if you don’t have this requirement you can disable other edit but only allow resize. 
  
 If you drag anyone vertex of circle, it won’t be a circle but a polygon. 
  
 Regards, 
  
 Don

Hi Don, 
 It was good to have the ability to change the shape if a circle, as it is now. Anyway since I have to avoid showing radius for other shapes I would better disable the editing of circles as you said. How do we do that and allow only resizing? 
  
 Thanks in advance. 
 Jacob

Hi Don, 

I figured out that it could be done by setting 



MapWindow.wpfMap1.EditOverlay.CanReshape = false; 



Thanks and regards, 

Jacob

Hi Jacob, 
  
 I think the code is helpful. 
  
  
  
  EllipseShape es = new EllipseShape(new PointShape(0, 0), 50);
            Map1.EditOverlay.EditShapesLayer.InternalFeatures.Add(new Feature(es));
            Map1.EditOverlay.CanReshape = false;
            Map1.EditOverlay.CanRotate = false;
            Map1.EditOverlay.CanDrag = true;
            Map1.EditOverlay.CanResize = true;
            Map1.EditOverlay.CalculateAllControlPoints();
 
  
 Regards, 
  
 Don