public void RemoveFeaure(MLFeature feature) { //更新要素列表 for (int i = 0; i != features.Count; ++i) { if (feature.ID == features[i].ID) { RemoveFeaure(i); return; } } }
/// <summary> /// 向要素类中添加要素 /// </summary> /// <param name="curFea">要素</param> /// <param name="values">要素对应的属性信息</param> public void AddFeaure(MLFeature curFea, object[] values = null) { //更新要素列表 features.Add(curFea); //更新mbr if (mbr != null)//features已经存在 { mbr[0] = Math.Min(mbr[0], curFea.XMin); mbr[1] = Math.Max(mbr[1], curFea.XMax); mbr[2] = Math.Min(mbr[2], curFea.YMin); mbr[3] = Math.Max(mbr[3], curFea.YMax); } else//add第一个feature时 { mbr = new double[4]; mbr[0] = curFea.XMin; mbr[1] = curFea.XMax; mbr[2] = curFea.YMin; mbr[3] = curFea.YMax; } //更新属性表 attributeData.BeginLoadData(); if (values != null) { object[] curValues = new object[values.Length - 1]; curValues[0] = values[0]; curValues[1] = featureType; Array.Copy(values, 3, curValues, 2, values.Length - 3); attributeData.LoadDataRow(curValues, true); } else { object[] curValues = new object[attributeData.Columns.Count]; curValues[0] = (uint)attributeData.Rows.Count; curValues[1] = featureType; attributeData.LoadDataRow(curValues, true); } attributeData.EndLoadData(); }
private void mlMap_TrackingFinished(object sender, MLFeature feature) //追踪结束的事件,由MLMap里双击事件触发 { dataFrame.layers[dataFrame.index].featureClass.AddFeaure(feature); //将新的要素添加到要素类中 mlMap.Refresh(); }