资源描述:
《mapx从数据库读取数据形成新图层--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、MapX从数据库读取数据形成新图层>>在C#中实现MapX从数据库读取数据形成新图层分为两个问题:1.MapX从数据库读取数据形成新图层;2.将DataTable转换为ADO的Recordset。这里的第二个问题是由第一个问题引起的,因为MapX是一个控件,而且它只支持ADO的数据访问方式,而C#编程时一般会使用ADO.方式,为此需要在两种方式之间做一下转换。(当然也可以在C#12345678下一页>>>>这篇文章来自..,。中使用ADO方式,但这毕竟是落后的方法。该解决办法可参考文章《VisualBasic.中使用ADO访问数据库》)。对第二个问题的解决办法,参见的另一篇文章《将
2、DataTable对象转换为Recordset对象》(allentao/archive/2005/05/11/373634.aspx),本文章只讲述在得到了Recordset对象后,如何解决第一个问题。步骤如下:1.创建CMapXFields对象,并对应数据库中字段添加字段;2.创建CMapXBindLayer对象,指定其坐标值字段的序号;上一页12345678下一页>>>>这篇文章来自..,。3.向map.DataSets中添加数据集,从而生成新的图层;4.指定新图层中要素的显示风格,本文采用显示位图的方式,为此需要将要显示的位图放入MapX安装目录的CUSTSYMB文件夹下。代
3、码如下:privatevoidCreatNeDB(stringlayerName,ADODB.RecordsetrsNoPass){this.DeleteLayerByName(layerName);//将原有层删除CMapXFieldsflds=nealstyle="MARGIN:0cm0cm0pt;TEXT-INDENT:21pt">上一页12345678下一页>>>>这篇文章来自..,。//DescribethestructureoftheUnbounddatasetflds.Add("stationid","theid",AggregationFunctionConstan
4、ts.miAggregationIndividual,FieldTypeConstants.miTypeString);flds.Add("address","address",AggregationFunctionConstants.miAggregationIndividual,FieldTypeConstants.miTypeString);flds.Add("longitude","longitude",AggregationFunctionConstants.miAggregationSum,FieldTypeConstants.miTypeNumeric);//经度fl
5、ds.Add("latitude","latitude",AggregationFunctionConstants.miAggregationSum,上一页12345678下一页>>>>这篇文章来自..,。FieldTypeConstants.miTypeNumeric);//纬度CMapXBindLayerbindLayerObject=nealstyle="MARGIN:0cm0cm0pt;TEXT-INDENT:21pt">bindLayerObject.LayerName=layerName;bindLayerObject.RefColumn1=3;bindLayerObj
6、ect.RefColumn2=4;bindLayerObject.LayerType=BindLayerTypeConstants.miBindLayerTypeXY;CMapXDatasetdataSet=map.DataSets.Add(DatasetTypeConstants.miDataSetADO,rsNoPass,layerName,"stationid","address",bindLayerObject,flds,false);上一页12345678下一页>>>>这篇文章来自..,。CMapXLayerlayer=map.Layers._Item(layerName
7、);layer.OverrideStyle=true;stringpicName="icon.BMP";if(layer.Style.SupportsBitmapSymbols==true){layer.Style.SymbolType=SymbolTypeConstants.miSymbolTypeBitmap;layer.Style.SymbolBitmapSize=60;layer.Style.SymbolBitmapTransparent=true;layer