我是 DotSpatial 的初学者,我遇到了一个问题。我尝试使用内存功能(仅将它们保留在地图中),直到用户点击保存按钮。基本思想是,如果 FeatureSet 不完全存在,用户导入一些 dxf 文件并根据图层名称创建特征集,并且为 dxf 中的每条折线创建将添加到特征集中的特征。
public IFeature AddPoligons(EntityObject polyline, List<Text> textInDxf)
{
IFeatureSet featureSet = null;
//Getting the right featureset from map
foreach (var x in appManager.Map.GetPolygonLayers())
{
if (!string.Equals(x.DataSet.Name, layerName)) continue;
featureSet = x.DataSet as FeatureSet;
break;
}
var polygon = CreatePolygon(polyline);
//Creating feature and adding to FeatureSet
var feature = featureSet.AddFeature(polygon);
//Populating DataRow with information
AddinfoIntoDataTable(feature, polygon, textInDxf);
return feature;
}
一切看起来都很好,地图用新的多边形更新,可以选择它们,从数据表中查看信息但是,当我尝试删除选定的特征(多边形)时,它会引发 IndexOutOfRange 异常。
我在那里做错了什么?
请帮忙!谢谢你,对我糟糕的英语感到抱歉。
PS 当我首先创建 featureSet 时,我将它保存在磁盘上,然后使用 Map.AddLayer() 方法加载到地图中。