var
CarCode:string;
EndTime:string;
StartTime:string;
n:integer; //gps轨迹中取得点的个数
Time:TDateTime;
i:integer;
ptsTrack:MapXLib_TLB.CMapXPoints;
pt1,pt2:MapXLib_TLB.CMapXPoint;
tempStyle:MapXLib_TLB.CMapXStyle;
fNewFea:variant;
fMapFea:variant;
pTrack:array of pTrackRec;
begin
CoInitialize(nil);
CarCode:=commblock.CommCarCard;
StartTime:=DateTimeToStr(commblock.CommStartTime);
EndTime:=DateTimeToStr(commblock.CommEndTime);
if not GisDM.GisDCOMConn.Connected then
GisDM.GisDCOMConn.Connected:=True;
GisDM.cdsTrackInfo.Data:=GisDM.GisDCOMConn.AppServer.GetGpsInfo(CarCode,StartTime,EndTime);
GisDM.cdsTrackInfo.Open;
n:=GisDM.cdsTrackInfo.RecordCount;
SetLength(pTrack,n);
GisDM.cdsTrackInfo.First;
pTrack[0].TrackLong:=GisDM.cdsTrackInfo.FieldByName('longitude').AsFloat;
pTrack[0].TrackLat:=GisDM.cdsTrackInfo.FieldByName('latitude').AsFloat;
pTrack[0].SendTime:=GisDM.cdsTrackInfo.FieldByName('sendtime').AsFloat;
GisDM.cdsTrackInfo.Next;
for i:= 1 to n-1 do
//记录车辆经过的每一个点
begin
pTrack[i].TrackLong:=GisDM.cdsTrackInfo.FieldByName('longitude').AsFloat;
pTrack[i].TrackLat:=GisDM.cdsTrackInfo.FieldByName('latitude').AsFloat;
pTrack[i].SendTime:=GisDM.cdsTrackInfo.FieldByName('sendtime').AsDateTime;
GisDM.cdsTrackInfo.Next;
end;
i:=1;
for i:= 1 to n do
//轨迹回放
begin
sleep(INTERVAL);
if i = 1 then
begin
XCar:=pTrack[i-1].TrackLong;
YCar:=pTrack[i-1].TrackLat;
if MainForm.CarAddTimer.Enabled=False then
MainForm.CarAddTimer.Enabled:=True;
//MainForm.CarAddTimer.Enabled:=False;
end
else
if i>1 then
begin
sleep(1000);
preXCar:=pTrack[i-2].TrackLong;
preYCar:=pTrack[i-2].TrackLat;
XCar:=pTrack[i-1].TrackLong;
YCar:=pTrack[i-1].TrackLat;
MainForm.Map1.Layers.AnimationLayer:=Track_Layer;
Track_Layer.Editable:=True;
ptsTrack:=MapXLib_TLB.CoPoints.Create;
pt1:=MapXLib_TLB.CoPoint.Create;
pt2:=MapXLib_TLB.CoPoint.Create;
//回放轨迹路线
tempStyle:=MapXLib_TLB.CoStyle.Create;
SetTrackStyle(tempStyle);
pt1.Set_(preXCar,preYCar);
pt2.Set_(XCar,YCar);
ptsTrack.Add(pt1,EmptyParam);
ptsTrack.Add(pt2,EmptyParam);
fNewFea:=MainForm.Map1.FeatureFactory.CreateLine(ptsTrack,tempStyle);
fMapFea:=Track_Layer.AddFeature(fNewFea,EmptyParam);
sleep(1000);
if MainForm.CarAddTimer.Enabled=False then
MainForm.CarAddTimer.Enabled:=True;
//MainForm.CarAddTimer.Enabled:=False;
end;
end;
fMapFea.Update;
VarClear(fMapFea);
VarClear(fNewFea);
MainForm.CarAddTimer.Enabled:=False;
end;
;
|