从数据库绘制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 二〇〇四年七月十三日
[Delphi程序]从数据库绘制MapX地图
|