动态图层中的图元移动,我的程序中为什么不动?
刚开始用MAPINFO,用DELPHI开发的。试着写了一个例子,但是图元不能移动,请问为什么呢?程序如下
procedure TForm1.RzBitBtn5Click(Sender: TObject);
var
MyLayer: variant;
unusedVt: OleVariant;
fNewSymbol: Variant;
fMapSymbol: Variant;
fFtrFactory : Variant;
fNewStyle: CMapxStyle;
pItem : Variant;
begin
//创建图层
TVarData(unusedVt).vType := varError;
TVarData(unusedVt).vError := 2147614724;
MyLayer:=Map1.Layers.CreateLayer('MyLayer',unusedVt,1,unusedVt,unusedVt);
Map1.Layers.AnimationLayer:=Map1.Layers.Item[MyLayer.Name];
//创建图元
fFtrFactory := Map1.FeatureFactory;
MyLayer.OverrideStyle :=True;
pItem := CreateOleObject('MapX.Point.5');
pItem.Set(Map1.CenterX, Map1.CenterY);
//设置图元显示格式
fNewStyle:=Map1.Layers.Item[MyLayer.Name].Style;
fNewStyle.SymbolType:=miSymbolTypeBitmap;
fNewStyle.SymbolBitmapSize:=32;
fNewStyle.SymbolBitmapName:='POLI1-32.BMP';
fNewStyle.SymbolBitmapTransparent:=True;
fNewSymbol := fFtrFactory.CreateSymbol(pItem, fNewStyle);
//添加到图层
fMapSymbol := MyLayer.AddFeature(fNewSymbol);
Timer1.Enabled :=True;
end;
上面是创建动态图层,设置显示样式,并且启动定时器。定时器程序如下:
procedure TForm1.Timer1Timer(Sender: TObject);
var
fFeatures: variant;
fSelFeature: variant;
NewX,NewY: integer;
iSpeed: integer;
dHeading: double;
dYcomp,dXcomp: Double;
OldPoint,NewPoint: string;
begin
Timer1.Enabled :=False;
fFeatures:=Map1.Layers.Item['MyLayer'].AllFeatures;
iSpeed:=2000;
dHeading:=20;
dYcomp := iSpeed * Sin(dHeading * 3.14159 / 180);
dXcomp := iSpeed * Cos(dHeading * 3.14159 / 180);
Newy := fFeatures.item[1].CenterY + (1 / 69 * dYcomp * Timer1.interval / 1000 * 1 /3600);
Newx := fFeatures.item[1].CenterX + (1 / 69 * dXcomp * Timer1.interval / 1000 * 1 /3600);
OldPoint:='X=' + FloatToStr(fFeatures.item[1].CenterX) + ' Y=' + FloatToStr(fFeatures.item[1].CenterY);
NewPoint:='X=' + FloatToStr(NewX)+ ' Y=' + FloatToStr(NewY);
showmessage(OldPoint + ' ' + NewPoint);
fFeatures.Item[1].point.Set(Newx,Newy);
fFeatures.item[1].Update;
Timer1.Enabled:=True;
end;
定时器程序中有一点是从MAPINFO中拷过来的。程序运行后,图标一直就是在地图中心。请问高手,程序哪里写的不对?