R
ranyang
Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi+mapx4.5开发的gis系统,通过socket服务器回传某车台地理位置信息,但是在地图上绘制这台车的具体位置时发现了一个奇怪的问题:
我下载了一个上海市地图,在程序中使用,当回传位置后,在地图上不能标记,而且软件系统死掉!
但是奇怪的是,我换了别的地图后,没有这样的问题!!!!
大家帮我想想!!!!急急急急急急~
我dubug程序发现:
里面有一个函数,不好意思,这个函数不是我自己写的,发现在这里发生了太多循环,而程序就是在这里死掉的:
帮我看一下有什么问题:
procedure TF_Main.AreaFind(lon, lat:do
uble;
Distance: integer;
Listbox: TListBox;
Edit: TEdit;CarNum:string);
var
ftrs: MapXLib_tlb.CMapXFeatures;
Pt:MapXlib_tlb.CMapXPoint;
i,k:integer;
begin
Listbox.Clear;
Edit.Text:='';
pt := CoPoint.Create;
pt.Set_(lon,lat);
for i:=map1.Layers.Countdo
wnto 1do
begin
ftrs:=map1.Layers.Item.SearchWithinDistance(pt,distance,miUnitMeter, miSearchTypePartiallyWithin);
if ftrs.Count>0 then
begin
for k:=1 to ftrs.Countdo
begin
if (ftrs.Item[k].KeyValue<>'') and (IsNumber(ftrs.Item[k].KeyValue)='No') and (Listbox.Count<5) then
begin
Listbox.Items.Add(ftrs.Item[k].KeyValue);
if Edit.Text='' then
Edit.Text:=Edit.Text+ftrs.Item[k].KeyValue
else
Edit.Text:=Edit.Text+' , '+ftrs.Item[k].KeyValue;
end;
end;
end;
end;
Edit.Text:=Edit.Text+'附近';
if Listbox.Count=0 then
begin
Distance:=Distance*2;
AreaFind(lon,lat,Distance,Listbox,Edit,CarNum);
end;
end;
我下载了一个上海市地图,在程序中使用,当回传位置后,在地图上不能标记,而且软件系统死掉!
但是奇怪的是,我换了别的地图后,没有这样的问题!!!!
大家帮我想想!!!!急急急急急急~
我dubug程序发现:
里面有一个函数,不好意思,这个函数不是我自己写的,发现在这里发生了太多循环,而程序就是在这里死掉的:
帮我看一下有什么问题:
procedure TF_Main.AreaFind(lon, lat:do
uble;
Distance: integer;
Listbox: TListBox;
Edit: TEdit;CarNum:string);
var
ftrs: MapXLib_tlb.CMapXFeatures;
Pt:MapXlib_tlb.CMapXPoint;
i,k:integer;
begin
Listbox.Clear;
Edit.Text:='';
pt := CoPoint.Create;
pt.Set_(lon,lat);
for i:=map1.Layers.Countdo
wnto 1do
begin
ftrs:=map1.Layers.Item.SearchWithinDistance(pt,distance,miUnitMeter, miSearchTypePartiallyWithin);
if ftrs.Count>0 then
begin
for k:=1 to ftrs.Countdo
begin
if (ftrs.Item[k].KeyValue<>'') and (IsNumber(ftrs.Item[k].KeyValue)='No') and (Listbox.Count<5) then
begin
Listbox.Items.Add(ftrs.Item[k].KeyValue);
if Edit.Text='' then
Edit.Text:=Edit.Text+ftrs.Item[k].KeyValue
else
Edit.Text:=Edit.Text+' , '+ftrs.Item[k].KeyValue;
end;
end;
end;
end;
Edit.Text:=Edit.Text+'附近';
if Listbox.Count=0 then
begin
Distance:=Distance*2;
AreaFind(lon,lat,Distance,Listbox,Edit,CarNum);
end;
end;