代码名称:轨迹回放(delphi)

作者/收集者:islkeng

开发环境:Delphi + MapX

代码:

procedure tfrmTrack.AddCar();
 var
  fFtrFactory : olevariant;
  pItem :variant;
  pitems : olevariant;
  fNewSymbol :variant;
  fMapSymbol : variant;
    x1:double;
  y1:double;
  fline:boolean;
  pitem1:variant;
     lyrMyLayer: variant;
   fFeature : Variant;
      fMap :  variant;
   fMapB: boolean;
 begin
{读取经纬度}
   if not DM1.qryTrace.eof then //如果还没到末尾
          begin
            x1:=DM1.qryTrace.Fields[6].value;
            y1:=DM1.qryTrace.Fields[7].value;
            label7.Caption := datetimetostr(DM1.qryTrace.Fields[4].value);
            DM1.qryTrace.next;   //下一条记录
         if x1<>0 then
         begin
            fFtrFactory := map1.FeatureFactory;
            pItem := CreateOleObject('MapX.Point.4');

            pitems := CreateOleObject('MapX.Points.4');
            pItem.Set(X1, Y1);

          if fline = false then
            begin
              pitem1 := pitem;
              pitems.add(pitem1);
              pitems.add(pitem);
               fline := true;
            end
          else
            begin
              pitems.add(pitem1);
              pitems.add(pitem);
              pitem1 := pitem;
            end;

            fNewSymbol := fFtrFactory.createline(pitems,map1.DefaultStyle );
            fnewsymbol.style.linewidth :=7;
            fnewsymbol.style.linecolor :=clred;
             fMapSymbol := lyrMyLayer.AddFeature(fNewSymbol);

            fNewSymbol := fFtrFactory.CreateSymbol(pitem, map1.DefaultStyle);
            fMapSymbol := lyrMyLayer.AddFeature(fNewSymbol);
        if fMapB=false then
           begin
             fMap := fMapSymbol;
             fMapB:=true;
           end
        else
           begin
             lyrMyLayer.DeleteFeature(fMap);
             fMap := fMapSymbol;
           end;
      end;
      end;
 end;