Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

While adding a new feature to a feature layer I like to show the size (area)/length of the sketch so that the user has a better feedback while placing the vertexes. So I hook up MapControl's OnMouseMove and get the IEngineEditSketch. But that one only gives me the size/length without the current mouse position beeing a vertex. So I tried to add that point to a clone but the size of the clone still is the size without the actual mouse position.

So how can I show the user the size/length the feature would have, if he/she would add a vertex at the current mouse position?

private void mapControl_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e)
{
  if (m_engineEditor.EditState == esriEngineEditState.esriEngineStateEditing)
  {
    IEngineEditSketch editSketch = m_engineEditor as IEngineEditSketch;
    if (editSketch != null)
    {
      switch (editSketch.GeometryType)
      {
        case esriGeometryType.esriGeometryPoint:
          // TODO
          break;
        case esriGeometryType.esriGeometryPolygon:
          IPolygon polygon = editSketch.Geometry as IPolygon;
          if (polygon != null)
          {
            IClone clone = polygon as IClone;
            if (clone != null)
            {
              IPolygon copyPolygon = clone.Clone() as IPolygon;
              IPointCollection copyPoints = copyPolygon as IPointCollection;
              if (copyPolygon != null && copyPoints != null)
              {
                IPoint thisPoint = new PointClass() { X = e.mapX, Y = e.mapY };
                copyPoints.AddPoint(thisPoint);
                copyPolygon.Close();
                IArea area = copyPolygon as IArea;
                if (area != null)
                {
                  StatusText = String.Format("Area: {0}", area.Area);
                }
              }
            }
          }
          break;
        case esriGeometryType.esriGeometryPolyline:
          // TODO
          break;
        default:
          break;
      }
    }
  }
}
share|improve this question

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.