我想了个算法,但不知道对不对
var
nPixel:integer;
DC:HDC;
X1,Y1,X2,Y2:double;
dist:double;
X,Y:Single;
begin
X:=10;
Y:=10;
Map1.ConvertCoord(X, Y, X1, Y1, miScreenToMap);
X:=11;
Y:=10;
Map1.ConvertCoord(X, Y, X2, Y2, miScreenToMap);
dist := Map1.Distance(X1, Y1, X2, Y2);//得到一个像素点在地图上的距离
DC:=GetDC(map1.Handle);
nPixel:=GetDeviceCaps(DC,LOGPIXELSX);//得出map控件上一英寸有多少像素。
//控件高和宽都是以像素为单位的,一英寸等于2.54厘米。
dist:=dist*nPixel/2.54;
showmessage('1厘米:' + FormatFloat('0.00',dist) + '米');
ReleaseDC(map1.Handle,DC);
//不知道这种算法对不对
end;