可以看到,我们在窗口左边放置了一个ListView控件,并在ListView中增加了4列(Columns)来显示数据.同时,把MapX控件的地图换成了我们自己制作的"小区"地图.
在button1的单击事件button1_Click中编写如下代码:
MapXLib.Fields flds=new MapXLib.FieldsClass();
MapXLib.Layer lyr=axMap1.Layers._Item("HouseLayer");
MapXLib.Dataset dts=null;
flds.Add("ID","ID",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeString);
flds.Add("名称","名称",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeString);
flds.Add("月供年限","月供年限",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeInteger);
flds.Add("水电费","水电费",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeFloat);
dts=axMap1.DataSets.Add(MapXLib.DatasetTypeConstants.miDataSetLayer,lyr,lyr.Name,0,0,0,
flds,false);
listView1.Items.Clear();
for(int i=1;i<=dts.RowCount;i++)
{
listView1.Items.Add( new ListViewItem(new string[]{dts[i,1].ToString(),
dts[i,2].ToString(),
dts[i,3].ToString(),
dts[i,4].ToString()}));
}
axMap1.DataSets.RemoveAll();
代码依旧很短,是对以前所介绍知识的进一步深化.这里要注意的是对dts的应用.运行程序,可以看到程序把所有的图元数据都正确地读取出来了.
在程序末尾,我们将MapX控件中的DataSets全部移除,这是为了以后再使用DataSets方便.
2.添加数据(Data Adding)
在图层表上添加数据实际上就是添加图元,只不过这个图元是带有数据信息的.
仍然使用读取数据的例子,我们在窗口上增加一个按钮button2,编写它的单击事件代码button2_Click如下:
MapXLib.Feature ftr=new MapXLib.FeatureClass();
MapXLib.Points pts=new MapXLib.PointsClass();
MapXLib.Point pt=new MapXLib.PointClass();
MapXLib.RowValues rvs=new MapXLib.RowValuesClass();
MapXLib.Fields flds=new MapXLib.FieldsClass();
MapXLib.Layer lyr=axMap1.Layers._Item("HouseLayer");
MapXLib.Dataset dts=null;
flds.Add("ID","ID",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeString);
flds.Add("名称","名称",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeString);
flds.Add("月供年限","月供年限",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeInteger);
flds.Add("水电费","水电费",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeFloat);
dts=axMap1.DataSets.Add(MapXLib.DatasetTypeConstants.miDataSetLayer,lyr,lyr.Name,
0,0,0,flds,false);
rvs=dts.get_RowValues(0);
rvs._Item("ID").Value="0003";
rvs._Item("名称").Value="C栋";
rvs._Item("月供年限").Value=20;
rvs._Item("水电费").Value=21.73;
ftr.Attach(axMap1.GetOcx());
ftr.Style=axMap1.Layers._Item("HouseLayer").Style;
ftr.Style.RegionPattern=MapXLib.FillPatternConstants.miPatternSolid;
ftr.Style.RegionColor=16711680;
ftr.Type=MapXLib.FeatureTypeConstants.miFeatureTypeRegion;
pt.Set(1,1);
pts.Add(pt,1);
pt.Set(2,1);
pts.Add(pt,2);
pt.Set(2,2);
pts.Add(pt,3);
pt.Set(1,2);
pts.Add(pt,4);
ftr=axMap1.FeatureFactory.CreateRegion(pts,ftr.Style);
ftr=axMap1.Layers._Item("HouseLayer").AddFeature(ftr,rvs);
ftr.Update(ftr,rvs);
axMap1.DataSets.RemoveAll();
|