
CMapXFields MapFields // 定义属性管理对象
LayerInfo.CreateDispatch( LayerInfo.GetClsid() ) //创建图层对象
MapFields.CreateDispatch( MapFields.GetClsid() )//创建属性管理对象
MapFields.AddIntegerField( "C_ID" , TRUE ) //属性管理对象添加字段 C_ID 类型为TRUE
MapFields.AddStringField( "Name" , 32 ) //继续添加字符字段 NAME 长度大小为32
COleVariant vFields//定义ole变体 变量 为了将mapfields 关联到layerinfo上
vFields.vt = VT_DISPATCH //设置类型为DISPATCH
vFields.pdispVal = MapFields//管理对象为定义的属性管理对象
vFields.pdispVal->AddRef()//加1 com组件的特性
LayerInfo.SetType( miLayerInfoTypeNewTable )// 图层信息对象设置图层类型添加新的
LayerInfo.AddParameter("Filespec" , COleVariant("car") )// 图层信息对象添加Filespec字段数据
LayerInfo.AddParameter("Name" , COleVariant("DC Water") )//继续添加Name字段数据
LayerInfo.AddParameter("Fields", vFields )//继续添加Fields字段数据 此时将上面定义的属性管理对象与图层信息关联
m_ctrlMapX.GetLayers().Add( LayerInfo )// 现在就可以添加这个永久图层了
mapx的数据绑定。
项目要求:将一些数据,用专题图的方式在地图上显示出来。
1、首先创建一个临时图层(根据项目需求,没必要创建永久图层)
开始用creatLayer方法建的,
A、用MainMap.Layers.CreateLayer方法创建临时表。但这个临时表只有一个字段:GeoName(
Char 24)。程序运行过程中该表存放位置为系统临时文件夹下
B、使用LayerInfo对象创建临时表,可以指定字段。示例:
2、将要显示的数据添加到新建的图层上。
网上找到的资料都是和数据库进行绑定,然后吧啦吧啦就ok了,但我addData时报:Invalid Field specified. Name not found, or index out of range. 错误。
原因:因为我是用A方法创建的图层,这时只有一个默认的字段,Geoname
[c-sharp] view plain copy
MapXLib.Fields fields = new MapXLib.FieldsClass()
fields.AddFloatField("lon", Type.Missing)
fields.AddFloatField("lat", Type.Missing)
MapXLib.Dataset testDataSet = axMap.DataSets.Add(MapXLib.DatasetTypeConstants.miDataSetLayer, tempLayer, "", 0, 0, 0, fields , false)
Add时传进去的参数是fields,当然就报这个错误了,应该换用B方法创建图层。
假设MapX已经打开一个图层,图层名为"a",手头还有一个Access数据库a.mdb,数据库里面
有个表X想和a图层绑定。我们保证a层属性里面有一个字段ID1与表X的一个字段ID2是匹配
的!!
问题一:数据库中的某一字段要和表中的某一字段匹配,这句话什么意思?是字段名要一致,还是该列的数据完全一致?
问题二:我们用的数据不是从数据库取出来的,是随便设的一些数据,根据上面的意思,好像是指a层的一个字段名及类型,要和表
x的一个字段名和类型,完全一致。
//添加新的点
x = 100
y = 100
str = "节点"
pt.Set(x, y)
mystyle = lyr.AllFeatures[1].Style
fts = axMap1.FeatureFactory.CreateSymbol(pt, mystyle)
fts.KeyValue = str
lyr.AddFeature(fts, null)
lyr.Refresh()
我想把新的点添加到图层上,但是AddFeature()的第二个参数不能为空,呼唤哪位高手帮忙解决一下。
在线等啊!!!
第二个参数是RowValues:表示一行数据的属性数据的新值,RowValues集合中的每个值都相应于属性数据的一列,此参数只适用于miDatesetLayer类型的layer!
它是一个可选参数,C#却强制使用,没有办法的。要不你就声明一个Rowvalues的变量,然后放在第二个参数上!你试试看吧!
问题没有遇到过,不过既然是加载这个文件,那么首先需要这个文件存在(路径不能有错),然后就是在访问这个文件的时候这个文件需要关闭状态,其次就是你的程序要有打开这个文件的权限(每个程序运行都是在一定账户下执行的,所以需要你的文件具有这个权限,一般是IIS访问、everyone、你登录计算机的账户)。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)