场景中有两个图层,数据源来源于一个DatasetVector,;两个图层中的数据以数据源中某个属性字段进行筛选,然后在应用中分布针对两个图层进行添加新要素,实际上是向DatasetVector中添加新要素,只是相应的用于区别的属性值不一样,添加成功后,刷新场景,场景上显示添加的新要素总是这两个图层中的一个图层的符号显示,重新启动应用打开这两个图层后,图层上要素符号显示又正常,上代码如下:
//得到数据集的记录集,并向该要素类中添加要素,区别字段为stype
Recordset recordset = dassetpt.GetRecordset(true, SuperMap.Data.CursorType.Dynamic);
GeoPoint geoPoint = new GeoPoint(cpt.X, cpt.Y);
Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("dsname", txtDisaName.Text);
dict.Add("description", txtDesc.Text);
if (ctool == 2)
dict.Add("stype", "2");
else
{
dict.Add("stype", "1");
}
recordset.AddNew(geoPoint, dict);
bool success = recordset.Update();
recordset.Refresh();
if (success)
{
if(MessageBox.Show("成功")== DialogResult.OK)
{
recordset.Close();
recordset.Dispose();
this.DialogResult = DialogResult.OK;
this.Close();
}
}
//刷新场景代码如下:
string layertext = "";
if (currenttool == 2)
layertext = "X类点";
else
layertext = "Y类点";
Layer3D layer = FindLayerbyCaption(scenceControl.Scene, layertext);
layer.UpdateData();
scenceControl.Scene.Refresh();
scenceControl.Refresh();
如上代码所示,添加完毕后,刷新场景,新添加的要素显示的符号只是其中一个层的符号,重新启动后又正常。不知什么地方不对,望指点