救命啊!delphi+mapx向已有图层插入图元的怪现象!
用delphi+map5想已有图层插入图元信息点碰到很奇怪的问题。能插入图元,但是的数据出现错位,标签的内容却不正确,不显示名字显示的是X(经度)。
已有图层是自建的,来自数据库
oBLayer := coBindLayer.Create;
oBLayer.KeyLength:=4;
oBLayer.LayerName := lyr_name;
oBLayer.LayerType := miBindLayerTypeXY;//必须使用这个参数才能绑定XY坐标
oBLayer.RefColumn1 := 'X';//第一个参数必须指定为横坐标
oBLayer.RefColumn2 := 'Y';//纵坐标
ds := map1.Datasets.Add(miDataSetADO,adoquery1.Recordset,lye_name,'C_JGBH','C_NAME',oBLayer,EmptyParam,EmptyParam);
//向图层插入新的信息点
procedure Tmain_form.EditPoint2(x,y:Double);
.....
//取元图层的字段集
fldsUserLayer:=map1.DataSets._Item(form2.layer_name).Fields;
//创建dataset
dsUserLayer:= Map1.Datasets.Add (miDataSetLayer,layer,emptyparam,emptyparam,emptyparam,emptyparam,fldsUserLayer,emptyparam);
//根据字段集合建立rowvalues
fldsUserLayer:=dsUserLayer.Fields;
rv.Dataset:=dsUserLayer;
j:=fldsUserLayer.Count;
for i:=1 to j do
begin
rv.Field:=fldsUserLayer._Item(i);
s:=uppercase(fldsUserLayer._Item(i).Name);
s:=form2.ADOQuery1.FieldValues[s];
rv.Value:=s;
if s='X' then rv.Value:=x;
if s='Y' then rv.Value:=y;
if s='FLAG' then rv.Value:='1';
rvs.Add(rv);
end;
//插入图元
....
layer.AddFeature(ftr,rvs);
....
end;
我跟踪跟踪了一下rowvalues数据发现问题,但不知道怎么解决
addfeature插入图元时我先显示了rowvalues,
如下c_jgbh=sjakhdakhd
c_name=sjakhdakhd
x=108.307526908019
y=23.2249341275258
插入完毕选中图元再查看的时候就变成下面这个样子了(少了第一行的数值,下面胡字段依次上移)
c_jgbh=sjakhdakhd
c_name=108.307526908019
x=23.2249341275258
y=0
选中原来已有的点查看到的数据是正常的
补充:企业软件 , 地理信息系统