${iServerJava6R_EditFeaturesParameters_Title}

${iServerJava6R_EditFeaturesParameters_Description}

        /// <summary>${iServerJava6R_EditFeaturesService_method_ProcessAsync_D}</summary>
        /// <param name="parameters">${iServerJava6R_EditFeaturesService_method_ProcessAsync_param_Parameters}</param>
        /// <param name="state">${iServerJava6R_EditFeaturesService_method_ProcessAsync_param_state}</param>
        public void ProcessAsync(EditFeaturesParameters parameters, object state)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException(ExceptionStrings.ArgumentIsNull);
            }
            if (string.IsNullOrEmpty(this.Url))
            {
                throw new InvalidOperationException(ExceptionStrings.InvalidUrl);
            }

            if (parameters.EditType == EditType.ADD)
            {
                if (parameters.IsUseBatche)
                {
                    base.Url += ".json?isUseBatche=true&debug=true";
                }
                else
                {
                    base.Url += ".json?returnContent=true&debug=true";//直接获取添加地物SmID
                }

            }
            else if (parameters.EditType == EditType.DELETE)
            {
                base.Url += ".json?_method=DELETE&debug=true";
            }
            else
            {
                base.Url += ".json?_method=PUT&debug=true";
            }

            base.SubmitRequest(base.Url, GetParameters(parameters), new EventHandler<RequestEventArgs>(request_Completed), state, true, true);
        }
 //删除选中地物
 private void DeleteFeature_Click(object sender, RoutedEventArgs e)
 {
     EditFeaturesParameters param = new EditFeaturesParameters
     {
         EditType = EditType.DELETE,
         IDs = featureIDs,
     };
     EditFeaturesService deleteService = new EditFeaturesService(url2);
     deleteService.ProcessAsync(param);
     deleteService.ProcessCompleted += new EventHandler<EditFeaturesEventArgs>(deleteService_ProcessCompleted);
     deleteService.Failed += new EventHandler<ServiceFailedEventArgs>(deleteService_Failed);
 }
 /// <summary>${iServerJava6R_EditFeaturesService_method_ProcessAsync_D}</summary>
 /// <overloads>${iServerJava6R_EditFeaturesService_method_ProcessAsync_overloads_D}</overloads>
 public void ProcessAsync(EditFeaturesParameters parameters)
 {
     ProcessAsync(parameters, null);
 }
        private System.Collections.Generic.Dictionary<string, string> GetParameters(EditFeaturesParameters parameters)
        {
            Dictionary<string, string> dictionary = new Dictionary<string, string>();

            if (parameters.EditType == EditType.DELETE)
            {
                if (parameters.IDs != null)
                {
                    string ids = string.Empty;
                    List<string> idslist = new List<string>();
                    for (int k = 0; k < parameters.IDs.Count; k++)
                    {
                        //idslist.Add(parameters.IDs[k].ToString());
                        dictionary.Add(k.ToString(System.Globalization.CultureInfo.InvariantCulture), parameters.IDs[k].ToString(System.Globalization.CultureInfo.InvariantCulture));
                    }
                    //ids += string.Join(",", idslist.ToArray());
                    //dictionary.Add("Edit", ids);
                }
                else
                {
                    throw new ArgumentNullException(ExceptionStrings.ArgumentIsNull);
                }
            }
            else
            {
                if (parameters.Features != null && parameters.Features.Count > 0)
                {
                    string json = "";
                    List<string> list = new List<string>();

                    for (int i = 0; i < parameters.Features.Count; i++)
                    {
                        Dictionary<string, string> dict = new Dictionary<string, string>();
                        ServerFeature sf = parameters.Features[i].ToServerFeature();

                        //FiledNames
                        dict.Add("fieldNames", JsonHelper.FromIList(sf.FieldNames));

                        //FiledValues
                        dict.Add("fieldValues", JsonHelper.FromIList(sf.FieldValues));

                        //Geometry
                        if (parameters.EditType == EditType.UPDATA)
                        {
                            //更新时,ID的个数和Feature的个数不一致更新就不起作用!
                            if (parameters.IDs.Count == parameters.Features.Count)
                            {
                                if (sf.Geometry != null)
                                {
                                    sf.Geometry.ID = parameters.IDs[i];
                                }
                                else
                                {
                                    sf.ID = parameters.IDs[i];
                                }

                            }
                        }

                        dict.Add("ID", sf.ID.ToString(System.Globalization.CultureInfo.InvariantCulture));
                        dict.Add("geometry", sf.Geometry == null ? "null" : ServerGeometry.ToJson(sf.Geometry));

                        list.Add(EditGetStringFromDict(dict));
                    }

                    json += string.Join(",", list.ToArray());
                    dictionary.Add("Edit", json);
                }
            }

            return dictionary;
        }
        private void polygon_DrawCompleted(object sender, DrawEventArgs e)
        {
            //将绘制的地物显示在TempLayer中
            Feature f = new Feature()
            {
                Geometry = e.Geometry,
                Style = new PredefinedFillStyle()
                {
                    Fill = new SolidColorBrush(Colors.Green)
                },
            };

            tempLayer.AddFeature(f);

            EditFeaturesParameters param = new EditFeaturesParameters
            {
                EditType = EditType.ADD,
                Features = new FeatureCollection() { f }
            };

            //与服务器交互
            EditFeaturesService editService = new EditFeaturesService(url2);
            editService.ProcessAsync(param);
            editService.Failed += new EventHandler<ServiceFailedEventArgs>(editService_Failed);
            editService.ProcessCompleted += new EventHandler<EditFeaturesEventArgs>(editService_ProcessCompleted);
        }
        private void MyDataGrid_RowEditEnded(object sender, DataGridRowEditEndedEventArgs e)
        {
            EditFeaturesParameters updateParameters = new EditFeaturesParameters
            {
                EditType = EditType.UPDATA,
                Features = new FeatureCollection { MyDataGrid.SelectedFeatures[0] },
                IDs = new List<int> { Convert.ToInt32(MyDataGrid.SelectedFeatures[0].Attributes["SMID"].ToString()) }
            };

            EditFeaturesService updateByAttributesService = new EditFeaturesService(url2);
            updateByAttributesService.ProcessAsync(updateParameters);
            updateByAttributesService.ProcessCompleted += new EventHandler<EditFeaturesEventArgs>(updateByAttributesService_ProcessCompleted);
            updateByAttributesService.Failed += new EventHandler<ServiceFailedEventArgs>(updateByAttributesService_Failed);
        }
        //更新地物形状
        private void editfeature_GeometryEdit(object sender, Edit.GeometryEditEventArgs e)
        {
            if (e.Action == SuperMap.Web.Actions.Edit.GeometryEditAction.EditCompleted)
            {
                features.Clear();
                if (tempFeature == null)
                {
                    tempFeature = new Feature();
                }
                tempFeature.Geometry = e.Feature.Geometry;
                SmID = Convert.ToInt32(e.Feature.Attributes["SMID"].ToString());
                features.Add(tempFeature);

                EditFeaturesParameters updateParameters = new EditFeaturesParameters
                {
                    EditType = EditType.UPDATA,
                    Features = features,
                    IDs = new List<int>() { SmID },
                };

                EditFeaturesService editService = new EditFeaturesService(url2);
                editService.ProcessAsync(updateParameters);
                editService.ProcessCompleted += new EventHandler<EditFeaturesEventArgs>(updateService_ProcessCompleted);
                editService.Failed += new EventHandler<ServiceFailedEventArgs>(updateService_Failed);
            }
        }
        private void EditService_Click(object sender, RoutedEventArgs e)
        {
            Feature f = new Feature
            {
                Geometry = new GeoRegion
                  {
                      Parts = new ObservableCollection<Point2DCollection>
                    {
                        new Point2DCollection
                        {
                            new Point2D(-100,60),
                            new Point2D(-100,62),
                            new Point2D(-40,55)
                        }
                    }
                  }
            };

            f.Attributes.Add("SMID", "1166");
            f.Attributes.Add("SMSDRIW", "-7.433472633361816");
            f.Attributes.Add("POP_1994", "123456789");

            EditFeaturesParameters param = new EditFeaturesParameters()
            {
                EditType = EditType.ADD,
                //IDs = new List<int> { 248 }
                Features = new FeatureCollection { f }
            };

            EditFeaturesService editFeaturesService = new EditFeaturesService("http://localhost:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/World/features");
            editFeaturesService.ProcessAsync(param);
            editFeaturesService.ProcessCompleted += new EventHandler<EditFeaturesEventArgs>(editFeaturesService_ProcessCompleted);
            editFeaturesService.Failed += Failed;
        }