小辈刚接触MAPX 希望前辈们能指教.一,在DELPHI中我已经完成在图中画点,代码如下,请指正修改:
...
var
Form1: TForm1;
editlayer:variant;
const
mypointtool=1;
mylinetool=2;
...
procedure TForm1.FormActivate(Sender: TObject);
var
s:variant;
begin
editlayer:=map1.Layers.Item['sy'];
map1.CreateCustomTool(mypointtool,mitooltypepoint,miSymbolCursor,miArrowCursor,miArrowCursor, s);
map1.CreateCustomTool(mylinetool,mitooltypeline,microsscursor,miarrowcursor,miarrowcursor,s);
end;procedure TForm1.Map1ToolUsed(ASender: TObject; ToolNum: Smallint; X1, Y1,
X2, Y2, Distance: Double; Shift, Ctrl: WordBool;
var EnableDefault: WordBool);
var
newobj:variant;
pt:variant;
pts:variant;
begin
case toolnum of
1:
begin
pt:=createoleobject('mapx.point.5');
pt.set(x1,y1);
newobj:=map1.FeatureFactory.CreateSymbol(pt,map1.DefaultStyle); //创建符号对象(默认符号)并赋给newobj可变量
editlayer.addfeature(newobj);
end;
2:
begin
pts:=createoleobject('mapx.point.5');
pts.AddXY(X1,Y1);
pts.AddXY(X2,Y2);
newobj:=map1.FeatureFactory.CreateLine(pts,map1.DefaultStyle);
editlayer.addfeature(newobj);
VarClear(pts);
end;
end;
end;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
map1.currenttool:=mypointtool;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
map1.CurrentTool:=mylinetool;
end;二,现在想要实现:在2点间画线,删除已经画上的线,编辑已画上的线,删除已经画上的点,移动已经画上的点等功能
希望前辈能帮忙指教(最好有源代码)
小辈不胜感激....
...
var
Form1: TForm1;
editlayer:variant;
const
mypointtool=1;
mylinetool=2;
...
procedure TForm1.FormActivate(Sender: TObject);
var
s:variant;
begin
editlayer:=map1.Layers.Item['sy'];
map1.CreateCustomTool(mypointtool,mitooltypepoint,miSymbolCursor,miArrowCursor,miArrowCursor, s);
map1.CreateCustomTool(mylinetool,mitooltypeline,microsscursor,miarrowcursor,miarrowcursor,s);
end;procedure TForm1.Map1ToolUsed(ASender: TObject; ToolNum: Smallint; X1, Y1,
X2, Y2, Distance: Double; Shift, Ctrl: WordBool;
var EnableDefault: WordBool);
var
newobj:variant;
pt:variant;
pts:variant;
begin
case toolnum of
1:
begin
pt:=createoleobject('mapx.point.5');
pt.set(x1,y1);
newobj:=map1.FeatureFactory.CreateSymbol(pt,map1.DefaultStyle); //创建符号对象(默认符号)并赋给newobj可变量
editlayer.addfeature(newobj);
end;
2:
begin
pts:=createoleobject('mapx.point.5');
pts.AddXY(X1,Y1);
pts.AddXY(X2,Y2);
newobj:=map1.FeatureFactory.CreateLine(pts,map1.DefaultStyle);
editlayer.addfeature(newobj);
VarClear(pts);
end;
end;
end;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
map1.currenttool:=mypointtool;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
map1.CurrentTool:=mylinetool;
end;二,现在想要实现:在2点间画线,删除已经画上的线,编辑已画上的线,删除已经画上的点,移动已经画上的点等功能
希望前辈能帮忙指教(最好有源代码)
小辈不胜感激....
创建一个临时图层,然后把线画在这个图层上。因为临时图层在程序退出时会自动删除上面的线。