用MapX根据x、y坐标创建点图元(50分)

  • 主题发起人 主题发起人 pandame
  • 开始时间 开始时间
P

pandame

Unregistered / Unconfirmed
GUEST, unregistred user!
var
xx,yy:double;
pt:point;
aa:Style;
clientLayer:layer;
NewObj:Variant;
begin

......
clientLayer:=map1.Layers.CreateLayer('客户点',EmptyParam,1,EmptyParam,EmptyParam);//新建一个图层
clientLayer.Visible:=True;
//设置该图层可见
clientLayer.Editable:=True;
//设置图层可编辑,以便画Feature于该图层
map1.Layers.AnimationLayer:=clientLayer;
//设置新建图层为活动层

pt:=copoint.Create;
AA:=costyle.Create;
AA.SymbolType:=misymbolTypeTrueTypeFont;
AA.SymbolCharacter:=53;
pt.Set_(xx,yy);//前面省略的程序已经得到了xx、yy的值
NewObj:=map1.FeatureFactory.CreateSymbol(pt,AA);
Map1.layers.insertionlayer.AddFeature(NewObj,EmptyParam);
clientLayer.Refresh;
end;


这是我借鉴来的代码,出错了,那该怎么写呢?请教大虾指点!!
编译没有错,但运行时报错:access violation at address 51081416 in module'dgis'.read of address 00000000.
 
恳请大虾指点!u~p~
 
首先变量申明部分偶就没见过,
你引用哪里的?
 
出错啦!出的什么错??编译错误?还是运行错误?你不说清楚让我们怎么帮你呢?楼主好像是在出题考试一样...呵呵:)
 
听取大家的意见,我已经把问题重写了,谢谢大家!这回不知说明白没?请教大家!
 
从错误类型来看,应该是你访问了未分配内存或者是访问了无效指针之类的变量所致...检查一下这类问题看看
 
那这些语句从表面上看有没有逻辑错误呢?
访问了未分配内存或者是访问了无效指针之类的变量?我可以怎么检查呢?设置断点?
 
这问题会的不会的同志们路过都留下点墨宝吧,小女子不甚感激~
 
我帮你试过了,只需把Map1.layers.insertionlayer.AddFeature(NewObj,EmptyParam);
替换成 clientLayer.AddFeature(NewObj,EmptyParam);

这样就OK了.效果是一样的.
还有一点我告诉你,你这个函数难道每加一个点难道重新建一个图层,调用了几次会出错的.
 
是的,改了确实就可以了!我不需要每加一个点都重新建一个图层,我是先测试下一个点,看这样的写语句对不对。非常感谢tigerfive的提示!也确实是“访问了未分配内存的变量”insertionlayer所致。
还有:AA.SymbolCharacter:=53;我要是不想用53所代表的图标,而是用一个小房子似的图标代替,这可以去哪里查呢?
 
你不需要53号符号,可以改成别的符号,MapX提供的种类比较多,实在不行,你可以载入图片的方式,把32*32的小图片,放到Mapx安装目录下保存图片子目录下,那你加一个图元时就可以选择你想要显示的图标了.
 
我选中了MapX中的一个符号,可是不知道怎么用,不知道是哪个数字代表它,tigerfive你可以告诉我你的QQ吗?我截图给你看?
 
你在哪里啊,你的QQ呢?
 
谢谢富翁们!
 
晕,把Johnny_du,ken_gj的分加反了
 
:)呵,没关系
 
后退
顶部