${IS6_MeasureParameter_Title}

${IS6_MeasureParameter_Description}

Inheritance: ParametersBase
 /// <summary>${IS6_MeasureService_method_processAsync_D}</summary>
 /// <param name="parameters">${IS6_MeasureService_method_processAsync_param_parameters}</param>
 /// <param name="state">${IS6_MeasureService_method_processAsync_param_state}</param>
 public void ProcessAsync(MeasureParameters parameters, object state)
 {
     if (parameters == null)
     {
         //TODO:资源
         throw new ArgumentNullException(ExceptionStrings.ArgumentIsNull);
         //throw new ArgumentNullException("MeasureParameters is Null");
     }
     if (string.IsNullOrEmpty(this.Url))
     {
         //TODO:资源
         throw new InvalidOperationException(ExceptionStrings.InvalidUrl);
         //throw new InvalidOperationException("Url is not set");
     }
     base.SubmitRequest(base.Url + "/common.ashx?", GetParameters(parameters),
         new EventHandler<RequestEventArgs>(request_Completed), state, false);
 }
        //距离量算
        private void line_DrawCompleted(object sender, DrawEventArgs e)
        {
            //将线标绘在客户端要素图层
            PredefinedLineStyle lineStyle = new PredefinedLineStyle { Stroke = new SolidColorBrush(Colors.Red), StrokeThickness = 3 };
            Feature feature = new Feature
            {
                Geometry = e.Geometry,
                Style = lineStyle
            };
            featuresLayer.Features.Add(feature);

            MeasureParameters parameters = new MeasureParameters
            {
                Geometry = e.Geometry,
                MapName = "changchun"
            };
            MeasureService measureDistance = new MeasureService("http://localhost/IS/AjaxDemo");
            measureDistance.ProcessAsync(parameters);
            measureDistance.ProcessCompleted += new EventHandler<MeasureEventArgs>(measureDistance_ProcessCompleted);
            measureDistance.Failed += new EventHandler<ServiceFailedEventArgs>(measure_Failed);
        }
        //面积量算
        private void polygon_DrawCompleted(object sender, DrawEventArgs e)
        {
            //将面标绘在客户端任意图层
            PolygonElement polygon = e.Element as PolygonElement;
            polygon.Opacity = 0.618;
            polygon.StrokeThickness = 1;
            polygon.Fill = new SolidColorBrush(Colors.LightGray);
            this.elementsLayer.Children.Add(polygon);

            MeasureParameters parameters = new MeasureParameters
            {
                Geometry = e.Geometry,
                MapName = "changchun"
            };

            //与服务器交互
            MeasureService measureRegion = new MeasureService("http://localhost/IS/AjaxDemo");
            measureRegion.ProcessAsync(parameters);
            measureRegion.ProcessCompleted += new EventHandler<MeasureEventArgs>(measureRegion_ProcessCompleted);
            measureRegion.Failed += new EventHandler<ServiceFailedEventArgs>(measure_Failed);
        }
        private Dictionary<string, string> GetParameters(MeasureParameters parameters)
        {
            Dictionary<string, string> dictionary = new Dictionary<string, string>();
            Point2DCollection gps = new Point2DCollection();

            if (parameters.Geometry is GeoLine)
            {
                string method = "MeasureDistance";
                dictionary.Add("map", parameters.MapName);
                dictionary.Add("method", method);
                foreach (Point2DCollection g in (parameters.Geometry as GeoLine).Parts)
                {
                    for (int i = 0; i < g.Count; i++)
                    {
                        gps.Add(g[i]);
                    }
                }
                dictionary.Add("points", JsonHelper.FromPoint2DCollection(gps));

                dictionary.Add("trackingLayerIndex", "-1");
                dictionary.Add("userID", Guid.NewGuid().ToString());
                dictionary.Add("isHighlight", "false");

            }
            else if (parameters.Geometry is GeoRegion)
            {
                string method = "MeasureArea";
                dictionary.Add("map", parameters.MapName);
                dictionary.Add("method", method);

                foreach (Point2DCollection g in (parameters.Geometry as GeoRegion).Parts)
                {
                    for (int i = 0; i < g.Count; i++)
                    {
                        gps.Add(g[i]);
                    }
                }
                dictionary.Add("points", JsonHelper.FromPoint2DCollection(gps));

                dictionary.Add("trackingLayerIndex", "-1");
                dictionary.Add("userID", Guid.NewGuid().ToString());
                dictionary.Add("isHighlight", "false");
            }
            return dictionary;
        }
 /// <summary>${IS6_MeasureService_method_processAsync_D}</summary>
 /// <overloads>${IS6_MeasureService_method_processAsync_overloads}</overloads>
 /// <param name="parameters">${IS6_MeasureService_method_processAsync_param_parameters}</param>
 public void ProcessAsync(MeasureParameters parameters)
 {
     ProcessAsync(parameters, null);
 }