当前位置:编程学习 > 网站相关 >>

救命啊!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

选中原来已有的点查看到的数据是正常的




补充:企业软件 ,  地理信息系统
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,