delphi+mapx标注显示不全问题?请大侠们看看!(100分)

  • 主题发起人 主题发起人 zangqi
  • 开始时间 开始时间
Z

zangqi

Unregistered / Unconfirmed
GUEST, unregistred user!
源代码如下,请大侠们看看:
var
Form1: TForm1;
carlayer:cmapxlayer;
ffeature:cmapxfeature;

implementation

{$R *.dfm}

procedure init;
var
r,r2:variant;
begin

carlayer:=form1.Map1.Layers.CreateLayer('cars','',1,1,form1.map1.NumericCoordSys);
form1.Map1.Layers.AnimationLayer :=carlayer;
carlayer.LabelProperties.Position := miPositionTR;
carlayer.LabelProperties.Style.TextFontShadow := True;
carlayer.LabelProperties.Style.TextFontHalo := True;
r2:= carlayer.Style.textfont;
r2.name:='宋体';
r2.size:=24;
carlayer.LabelProperties.Overlap := True;
carlayer.LabelProperties.Style.TextFontColor := clred;
carlayer.AutoLabel := True;
carlayer.Style.SymbolType := miSymbolTypeTrueTypeFont
r:=carlayer.Style.SymbolFont;
r.name:='MapInfo Transportation'
r.size:=28;
carlayer.Style.SymbolFontColor := clBlue;
carlayer.Style.SymbolFontOpaque := False;
carlayer.Style.SymbolFontHalo := True;
carlayer.Style.SymbolFontShadow := True;
carlayer.Style.SymbolCharacter := 93;
end;


procedure drawcar;
var
fnewsymbol,fmapsymbol:cmapxfeature;
begin

ffeature:=cofeature.Create;
ffeature.Attach(form1.Map1.DefaultDispatch);
ffeature.Type_ := miFeatureTypeSymbol;
ffeature.Style := carlayer.Style;
ffeature.KeyValue:='ABC';
ffeature.Point.Set_(117.1748,39.1401);
ffeature:=carlayer.AddFeature(ffeature,EmptyParam);
end;



procedure TForm1.FormCreate(Sender: TObject);
begin

init;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin

drawcar;
end;


为什么运行了之后,在117.1748,39.1401位置显示的汽车符号上方只有'A'而不是'ABC'?
 
大家帮忙!
 
把init过程的第一句:
carlayer:=form1.Map1.Layers.CreateLayer('cars','',1,1,form1.map1.NumericCoordSys);
换成:
carlayer:=form1.Map1.Layers.CreateLayer('cars','',1,10000,form1.map1.NumericCoordSys);
最后在drawcar是最后写上:
form1.Map1.Refresh;
一定成功

 
to xuming
谢谢你的帮助,按照你的说法我试了果然可以,能讲一讲原理吗?
我的QQ是635093,能告诉我你的吗?我想多向你请教。
还有我用MAPX在DELPHI6下放大地图(用了map1.CurrentTool := mizoomintool;)。
放大到一定程度后报invalid floating point operation错误。请问这是怎么回事?
能解决吗?
分不够我再加。
 
我是DELPHI7+MAPX 4.5的环境,没有出现你所说的问题。
 
我用delphi5,delphi6,delphi7,bcb+mapx5.0都出现此问题。我将可视范围限制在1.8公里基本正常,可是当我换一幅详细一点的地图时超过3公里就报错了(invalid floating point operation错误)。DELPHI,BCB中有这种现象,VB中正常,听说VC中也正常。
 
to xuming
你的mapx4.5在那里下载的,我想试试D7+MAPX4.5的方式。有破解吗?
我觉得报错与地图也有关系,地图越详细数据越多,放大就越容易报错。但是VB就没事!唉.....
 
再加一问。
两个点:(117.1748,39.1401)和(120.1748,40.1401)
如何在程序里画一条线把它们连接起来
 
procedure createline(x1,y1,x2,y2:double);
var
pt:cmapxpoint;
pts:cmapxpoints;
begin

pt:=CoPoint.Create;
pts:=CoPoints.Create;
pt.Set_(x1,y1);
pts.Add(pt,emptyparam);
pt.Set_(x2,y2);
pts.Add(pt,emptyparam);
Line:= form1.Map1.ControlInterface.FeatureFactory.Createline(pts,form1.Map1.DefaultStyle);
Line:=carlayer.AddFeature(Line,emptyparam);
pt:=nil;
pts:=nil;
end;
 
接受答案了.
 
后退
顶部