Mapx数据绑定(300分)

  • 主题发起人 主题发起人 xgr541
  • 开始时间 开始时间
X

xgr541

Unregistered / Unconfirmed
GUEST, unregistred user!
有谁能解决mapx的数据绑定问题
 
没有人搞定的吗,我曾经发过个的,不过没有完成,我本来想加点分在上面的。
不过大富翁好像不支持这个的。就结束了,再加上来。再提出问题。
 
没有人做了吗,
 
现在退而居求其次了,只要能实现查找属性数据就性了
 
没有人试的吗
 
mapinfo有Mapx的Delphi的Demo和help,你可以去查一下
 
没有用的吧,我试过了,加上自己的数据库就不行了。
你有没有试成功过,要是成功的话能不能看一下你的代码。
 
要在form上放ADO控件,如果你想用ADO的话(建议),设置好连接,方法和普通数据库程序
开发也没什么两样,然后参考一下我下面的代码,添加数据集。
有了数据集,你就可以为所欲为了 :),或查属性数据,或作专题图什么的,都可以了。

procedure TForm1.N30Click(Sender: TObject);
begin

ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/工程/Delphi编程实践/MapXFengTai/database/ftycdb.mdb;Persist Security Info=False';
ADOQuery1.close;
ADOQuery1.Sql.Clear;
ADOQuery1.SQL.Add('Select * from 片区');
ADOQuery1.open;

ds := map1.datasets.Add(miDataSetADO,ADOQuery1.Recordset,'dsPQ','ph',Emptyparam,'片区图',Emptyparam,true);
end;


----------
题外话,我就喜欢这样的问题,帮人一点忙,还能得分 :)
 
这方面只看过书,没有自己尝试过,帮你提前吧![8D]
 
我再去试一下,我现在的开发环境越来越差了,上网还要到外面来,
我的那个项目到现在还没有完成,
 
还没搞定吗?
 
没有呢,你有空把这个程序发到我的信箱里来吗,
xgr541@163.com
我这段时间忙死了,并且老板又说了不小要求的。
 
唉!以前搞GIS的!现在不做了!
帮不上忙了!帮你UP一下!
 
兄弟我也搞GIS,不过刚开始,不懂,呵呵,帮你up
 
谢了,我还在做呢,
 
看看这个对你有没有用?
1、 TAB的数据分为两种数据:地图数据(Layers)、属性数据(Datasets)。关系:不可分割的一个数据集的两部分.
2、 数据加载:GST文件由GeosetManager40.exe程序生成。在程序使用gsT文件:Map1.Geoset=Filepath+FileName
3、 问题:GST文件加载后,只是默认将地图数据加载,属性数据另外需要使用单独的命令进行加载,否则对属性数据的操作全部非法。加载:Map1.Datasets.ADD 属性数据集名称
4、 另一种加载方式:使用LayerInfo 对象,这种方式下加载地图数据源的地图集和属性集均可直接使用。示例:
dim LayerInfo as MapXLib.LayerInfo
dim Lyr as Mpxlib.layer

LayerInfo.Type = miLayerInfoTypeTab ‘加载表的类型
LayerInfo.AddParameter "FileSpec", FilePath + LayerName + ".TAB" ‘加载表的全路径名
LayerInfo.AddParameter "NAME", LayerName ‘地图集的别名
LayerInfo.AddParameter "AutoCreateDataset", 1 ‘是否加载属性数据集
LayerInfo.AddParameter "datasetname", LayerName ‘属性数据集别名

MainMap.Layers.Add LayerInfo ‘加载到指定的MapX对象中,立即可直接使用

5、 第三种加载数据方式:GST文件+ LayerInfo方式。示例:
使用两个MapX对象:MainMap、TempMap
TempMap.Geoset=GST文件
MainMap.geoset=””
TempMap.Refresh

For I=1 to TempMap.Layers.Count
FileName=TempMap.Layers.Item(I).Filespec
‘直接引用LayerInfo方式加载地图数据到MainMap
Next
 
我现在绕过这个问题了,我现在没有时间做了,太烦了,
 
看看有没有人更好的方式来连接外部的属性数据库(access 或sql数据库)
 
不会吧,我也是9月份才开始学MapX。
绑定数据很简单啊。
首先,你要保证在你的地图文件中必须定义了一个Index字段。
procedure AddData();
var
Flds: CMapXFields;
MapDS: MapXlib_TLB.dataset;
Lyr: CMapXLayer;
DS: TADODataSet;
rs: _Recordset;
bindlyr,GFld: string;
const
miTypeString: integer = 0;
miTypeNumeric: integer = 1;
miTypeDate: integer = 2;
miTypeInt: integer = 3;
miTypeSmallInt: integer = 4;
miTypeFloat: integer = 5;
miTypeLogical: integer = 6;
miDataSetADO: integer = 12;
begin

Flds :=CoFields.Create;
DS :=TADODataSet.Create('ADODataSet控件');
DS.Connection :='ADOConnection控件';
DS.CommandText :='select Code....';
DS.Open;
rs :=DS.Recordset;
if not rs.EOF then

begin

Flds.Add('Code', 'Code', miAggregationIndividual, miTypeString);
Flds.Add('*', 'R_Name', miAggregationIndividual, miTypeString);
GFld :='Code';
//Code为要绑定图层上的Index字段
bindlyr :='要绑定的图层名';
MapDS :=curMap.Datasets.Add(miDataSetADO,rs,bindlyr,GFld,EmptyParam,bindlyr,Flds,EmptyParam);
end;

end;
 
我们那个老板不行,我不想给他做了,
不过这个问题可以再接着进行。
 
后退
顶部