MAPX在DELPHI6下放大地图到一定程度报错?!这是怎么回事?(100分)

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

zangqi

Unregistered / Unconfirmed
GUEST, unregistred user!
我用MAPX在DELPHI6下放大地图(用了map1.CurrentTool := mizoomintool;)。
放大到一定程度后报invalid floating point operation错误。请问这是怎么回事?
另外还想问一下MAPX在DELPHI中已知两点的经纬度,如何画出两点连线?
 
难道没有人遇到过这样的问题吗?
 
大家一定要帮帮我呀!
不知道的也捧个人场up一下吧!
 
你说的问题是存在的,不过你也没有必要让客户把地图放大到无限大吧
控制一下,放大到一定程度就不让继续放大了
 
当然要出错了.这是正常的,任何的放大都不可能是无限的.到最后必然是运算溢出的结果.
所以你应当限制一个地图的比例尺范围,过大或过小没有什么必要的.
 
同样的地图,在VB下就可以放大很多倍不报错,DELPHI,BCB下都报invalid floating point operation错!
难道就没法解决吗?难道我只能用VB开发了ma吗?
 
在mapx中的参数都是用DOUBLE类型定义的,DELPHI默认的为real,是不是这样造成不兼容而溢出?
 
我把map1的zoom属性调到1.5以下就肯定报错了,在1.8以下就经常报错,1.8以上相对稳定!
可是我可能要用1:2000的图呀,1.8也就能接受1:20000的图。怎么办呢?VB就没事,可我我想用DELPHI!
大家帮帮忙吧!
 
我也想学MAPX,你有oicq吗?我的是6754501
 
我的QQ635093
 
pt:=CoPoint.Create;
pt.Set_(x1,y1);
ivehiclecount:= ivehiclecount+1;
farray[ivehiclecount].ffeature:=cofeature.Create;
farray[ivehiclecount].ffeature.Attach(form1.Map1.DefaultDispatch);
farray[ivehiclecount].ffeature.Type_ := miFeatureTypeSymbol;
farray[ivehiclecount].ffeature.Style := lyrmylayer.Style;
str:='AC090898';
farray[ivehiclecount].ffeature.KeyValue:=str;
farray[ivehiclecount].ffeature.Point.Set_(x1,y1);
farray[ivehiclecount].ffeature:=lyrmylayer.AddFeature(farray[ivehiclecount].ffeature,EmptyParam);
farray[ivehiclecount].lspeed :=0;
farray[ivehiclecount].dheading:=0;
farray[ivehiclecount].sname :=inttostr(ivehiclecount);
我执行了以上代码,可是只在我的符号下面出现了'AC090898'的第一个字符A这是怎么回事?
 
delphi+mapx标注显示不全问题?请大侠们看看!
源代码如下,请大侠们看看:
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'?
 
关注:如果有人能解决问题,发个方法给我,谢谢!wind_2125@163.com
 
后退
顶部