Ejemplo n.º 1
0
        /// <summary>
        /// Updates the m_Polyline and MeasureItemsCollection based on the progress
        /// reported by <see cref="Esri.ArcGISRuntime.Controls.Editor"/>
        /// </summary>
        /// <param name="status"></param>
        private void OnStatusReported(GeometryEditStatus status)
        {
            var polyline = status.NewGeometry as Polyline;

            // Only reset display when first vertex is committed.
            if (polyline != null && polyline.Parts != null && polyline.Parts.Count > 0)
            {
                var vertices = polyline.Parts[0].GetPoints();
                if (vertices != null && vertices.Count() == 1)
                {
                    ResetDisplay();
                }
            }

            switch (status.GeometryEditAction)
            {
            case GeometryEditAction.AddedVertex:
            {
                MeasureItemCollection.Insert(status.VertexPosition.CoordinateIndex,
                                             new MeasureItem()
                    {
                        Location         = status.NewVertex,
                        LinearUnitType   = LinearUnitType,
                        CoordinateFormat = CoordinateFormat
                    });
                break;
            }

            case GeometryEditAction.DeletedVertex:
            {
                MeasureItemCollection.RemoveAt(status.VertexPosition.CoordinateIndex);
                break;
            }

            default:
            {
                MeasureItemCollection.Clear();
                if (polyline != null && polyline.Parts != null)
                {
                    foreach (var p in polyline.Parts[0].GetPoints())
                    {
                        MeasureItemCollection.Add(new MeasureItem()
                            {
                                Location         = p,
                                LinearUnitType   = LinearUnitType,
                                CoordinateFormat = CoordinateFormat
                            });
                    }
                }
                break;
            }
            }
            UpdateDisplay(polyline);
        }
		private void OnStatusUpdated(GeometryEditStatus status)
		{
			_measurements.Clear();
			var polyline = status.NewGeometry as Polyline;
			if (polyline == null || polyline.Parts == null || polyline.Parts.Count == 0)
				return;
			var vertices = polyline.Parts[0].GetPoints();
			if (vertices == null || !vertices.Any())
				return;
			var count = vertices.Count();
			if (count <= 1)
				return;
			MapPoint previous = null;
			int i = 1;
			foreach (var point in vertices)
			{
				if (previous == null)
				{
					previous = point;
					continue;
				}
				var lineSegment = new Polyline(new MapPoint[] {previous, point}, polyline.SpatialReference);
				var intermediateLength = GeometryEngine.GeodesicLength(lineSegment);
				_measurements.Add(string.Format("[{0}-{1}]\t:\t{2:0} m\n", i, i + 1, intermediateLength));
				previous = point;
				i++;
			}
			var totalLength = GeometryEngine.GeodesicLength(polyline);
			TotalLength.Text = string.Format("Total Length\t:\t{0:0} m\n", totalLength);
			if (count <= 2)
				return;
			var layer = MyMapView.Map.Layers["ResultLayer"] as GraphicsLayer; 
			if (layer == null)
				return;
			var graphic = layer.Graphics.FirstOrDefault();
			var polygon = new Polygon(vertices, polyline.SpatialReference);
			if (graphic != null)
				graphic.Geometry = polygon;
			else
				layer.Graphics.Add(new Graphic(polygon));
			if (count <= 1)
				return;
			if (count <= 2)
				return;
			var area = GeometryEngine.GeodesicArea(polygon);
			TotalArea.Text = string.Format("Area\t\t:\t{0:0} m²\n", area);
		}
Ejemplo n.º 3
0
        /// <summary>
        /// Updates the m_Polyline and MeasureItemsCollection based on the progress
        /// reported by <see cref="Esri.ArcGISRuntime.Controls.Editor"/>
        /// </summary>
        /// <param name="status"></param>
        private void OnStatusReported(GeometryEditStatus status)
        {
            var polyline = status.NewGeometry as Polyline;

            switch (status.GeometryEditAction)
            {
            case GeometryEditAction.AddedVertex:
            {
                MeasureItemCollection.Insert(status.VertexPosition.CoordinateIndex,
                                             new MeasureItem()
                    {
                        Location         = status.NewVertex,
                        LinearUnitType   = LinearUnitType,
                        CoordinateFormat = CoordinateFormat
                    });
                break;
            }

            case GeometryEditAction.DeletedVertex:
            {
                MeasureItemCollection.RemoveAt(status.VertexPosition.CoordinateIndex);
                break;
            }

            default:
            {
                MeasureItemCollection.Clear();
                if (polyline != null)
                {
                    foreach (var p in polyline.Paths[0])
                    {
                        MeasureItemCollection.Add(new MeasureItem()
                            {
                                Location         = new MapPoint(p, polyline.SpatialReference),
                                LinearUnitType   = LinearUnitType,
                                CoordinateFormat = CoordinateFormat
                            });
                    }
                }
                break;
            }
            }
            UpdateDisplay(polyline);
        }
        /// <summary>
        /// Updates the m_Polyline and MeasureItemsCollection based on the progress 
        /// reported by <see cref="Esri.ArcGISRuntime.Controls.Editor"/>
        /// </summary>
        /// <param name="status"></param>
        private void OnStatusReported(GeometryEditStatus status)
        {
            var polyline = status.NewGeometry as Polyline;

            // Only reset display when first vertex is committed.
            if (polyline != null && polyline.Parts != null && polyline.Parts.Count > 0)
            {
                var vertices = polyline.Parts[0].GetPoints();
                if (vertices != null && vertices.Count() == 1)
                    ResetDisplay();
            }

            switch (status.GeometryEditAction)
            {
                case GeometryEditAction.AddedVertex:
                {
                    MeasureItemCollection.Insert(status.VertexPosition.CoordinateIndex,
                        new MeasureItem()
                        {
                            Location = status.NewVertex,
                            LinearUnitType = LinearUnitType,
                            CoordinateFormat = CoordinateFormat
                        });
                    break;
                }
                case GeometryEditAction.DeletedVertex:
                {
                    MeasureItemCollection.RemoveAt(status.VertexPosition.CoordinateIndex);
                    break;
                }
                default:
                {
                    MeasureItemCollection.Clear();
                    if (polyline != null && polyline.Parts != null)
                    {
                        foreach (var p in polyline.Parts[0].GetPoints())
                        {
                            MeasureItemCollection.Add(new MeasureItem()
                            {
                                Location = p,
                                LinearUnitType = LinearUnitType,
                                CoordinateFormat = CoordinateFormat
                            });
                        }
                    }
                    break;
                }
            }
            UpdateDisplay(polyline);
        }
        private void OnStatusUpdated(GeometryEditStatus status)
        {
            _measurements.Clear();
            var polyline = status.NewGeometry as Polyline;

            if (polyline == null || polyline.Parts == null || polyline.Parts.Count == 0)
            {
                return;
            }
            var vertices = polyline.Parts[0].GetPoints();

            if (vertices == null || !vertices.Any())
            {
                return;
            }
            var count = vertices.Count();

            if (count <= 1)
            {
                return;
            }
            MapPoint previous = null;
            int      i        = 1;

            foreach (var point in vertices)
            {
                if (previous == null)
                {
                    previous = point;
                    continue;
                }
                var lineSegment        = new Polyline(new MapPoint[] { previous, point }, polyline.SpatialReference);
                var intermediateLength = GeometryEngine.GeodesicLength(lineSegment);
                _measurements.Add(string.Format("[{0}-{1}]\t:\t{2:0} m\n", i, i + 1, intermediateLength));
                previous = point;
                i++;
            }
            var totalLength = GeometryEngine.GeodesicLength(polyline);

            TotalLength.Text = string.Format("Total Length\t:\t{0:0} m\n", totalLength);
            if (count <= 2)
            {
                return;
            }
            var layer = MyMapView.Map.Layers["ResultLayer"] as GraphicsLayer;

            if (layer == null)
            {
                return;
            }
            var graphic = layer.Graphics.FirstOrDefault();
            var polygon = new Polygon(vertices, polyline.SpatialReference);

            if (graphic != null)
            {
                graphic.Geometry = polygon;
            }
            else
            {
                layer.Graphics.Add(new Graphic(polygon));
            }
            if (count <= 1)
            {
                return;
            }
            if (count <= 2)
            {
                return;
            }
            var area = GeometryEngine.GeodesicArea(polygon);

            TotalArea.Text = string.Format("Area\t\t:\t{0:0} m²\n", area);
        }