当前位置:主页>Delphi教程>文章内容
从数据库绘制MapX地图(二)
来源: 作者: 发布时间:2007-04-29  
数据库绘制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;
 
这个方法比上文提到的方法应该快了很多很多,哈哈~~
二〇〇四年七月十三日

 
上一篇:DELPHI的原子世界   下一篇:Delphi中取某整数的某位的位状态的小函数
 
  相关文章
·DELPHI的原子世界
·Delphi中取某整数的某位的位状态的小函
·AXScript.pas,从官方站点找到的IActiv
·MapX使用数据库数据添加专题图(系列之
·取的Combobox中的所选择项的值
·传说中的DELPHI9--DiamondBack
·改变DBGrid列的颜色,没什么特别,但是
·一种利用EXCEL快速写SQL语句的方法
·delphi中的split函数
·程序关联实现
·动画显示窗体
·钩子(HOOK)机制的使用
 
【关闭窗口】
推荐本站资源
最新文章