从数据库绘制MapX地图(二)

王朝delphi·作者佚名  2006-01-30
窄屏简体版  字體: |||超大  

从数据库绘制MapX地图(二)

主题:MapX Delphi数据库 地图 Layer Style Font

我在二〇〇四年四月十五日发表文章《从数据库绘制MapX地图》之后,我收到大量读者的来信,由于繁忙,不能一一回复,在这里对此表示真诚的歉意!仅以此文感谢对我表示支持的众位兄弟姐妹,谢谢你们。

这里提供的是一种更为高效的从数据库绘制MapX地图的方法,我在数据库中建立了如下的数据表:

表名称:Xunit

ID :字符串 //用于唯一标识各个图元,也可以是数字类型的

NAME :字符串 //图元的名称

X :浮点数 //图元横坐标

Y :浮点数 //图元纵坐标

代码清单:

//aqXUnit是一个TADOQuery,其中SQL语句为“SELECT * FROM XUNIT”。

procedure TfrmMain.DrawLayerFromDB;

var

oBLayer : BindLayer;

SearchLayer : Layer;

ds : Dataset;

begin

//使用这个过程必须保证aqXUnit表已经打开!

if not aqXUnit.Active then

begin

GiveMsg('系统基础表没有打开!');//调用自定义提示方法

exit;

end;

//创建BindLayer,非常讨厌半英半汉,没办法,不会翻译^_^

oBLayer := coBindLayer.Create;

oBLayer.LayerName := 'ARTEMIS';

oBLayer.LayerType := miBindLayerTypeXY;//必须使用这个参数才能绑定XY坐标

oBLayer.RefColumn1 := 'X';//第一个参数必须指定为横坐标

oBLayer.RefColumn2 := 'Y';//纵坐标

//添加数据集

ds := mapMain.Datasets.Add(12,//数据集类型,这是miDataSetADO,即ADO专用的

aqXUnit.Recordset,//使用这个方法获得ADO中的_Recordset类型

'DS_SK',//数据集名称

'ID',//传入的是Xunit表中的字段ID的名称

EmptyParam,

oBLayer,//BindLayer

EmptyParam,

EmptyParam);

//下边将设置新图层的各项属性

searchLayer := mapMain.Layers.Item('ARTEMIS');

//字体颜色

searchLayer.LabelProperties.Style.TextFontColor := miColorPurple;

searchLayer.LabelProperties.Style.TextFontHalo := true;

searchLayer.LabelProperties.Style.TextFontBackColor := miColorWhite;

//设置图元显示的标签

searchLayer.LabelProperties.Dataset := ds;

searchLayer.LabelProperties.DataField := ds.Fields.Item('NAME');

searchLayer.LabelProperties.LabelZoom := true;

//设置图层缩放比例范围

searchLayer.ZoomMin := 0;

searchLayer.ZoomMax := 200;

searchLayer.ZoomLayer := true;

//设置标签缩放比例范围

searchLayer.LabelProperties.LabelZoomMin := 0;

searchLayer.LabelProperties.LabelZoomMax := 200;

searchLayer.LabelProperties.LabelZoom := true;

//自动标记图元

searchLayer.AutoLabel := true;

end;

这个方法比上文提到的方法应该快了很多很多,哈哈~~

杨雨田 YangYutian@Hotmail.Com

二〇〇四年七月十三日

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航