首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
tellmenow (22)
cutemouse (22)
softj (78)
iiprogram (69)
qdzx2008 (50)
goodboy1881 (14)
wangchinaking (58)
fancyhf (1)
harrymeng (41)
yjz0065 (113)
CSDN - 文档中心 - Delphi 阅读:5332   评论: 0    参与评论
标题   从数据库绘制MapX地图(二)     选择自 Blue_Bat 的 Blog
关键字   从数据库绘制MapX地图(二)
出处  

从数据库绘制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

二〇〇四年七月十三日


相关文章
对该文的评论