delphi mapX添加图层,在图层上画图元,并给图元添加位图

  

//显示批量 车辆的位置信息

function TFormMain.ShowCarsPosition: Boolean;
var
  lyr: layer; //层
  fts: feature; //特征
  pt: MapXLib_TLB.point; //点
  mstyle: style; //样式
  str: string; //特征标注
  speed, x, y: double;
  Vehiclelist: TStringList;
  direction, i: Integer;
begin
  Map1.Layers.Remove(1);
  lyr := Map1.Layers.CreateLayer('tempAnimate', EmptyParam, 1, EmptyParam, EmptyParam);
       //在Map1中创建一个Layer
  Map1.Layers.AnimationLayer := lyr; //设为当前层

  lyr.Editable := true; //可编辑
  pt := copoint.Create;
  mstyle := costyle.Create;
    mstyle.SymbolType := miSymbolTypeBitmap;
  mstyle.SymbolBitmapSize := 18;
  mstyle.SymbolBitmapTransparent := True;
  mstyle.SymbolBitmapName := 'car.BMP';
 // mstyle := map1.Layers.item['汽车服务'].AllFeatures.Item[1].Style; //此处获取在层“汽车服务”中存储的特征样式
  lyr.Style := map1.Layers.item['汽车服务'].Style; //层的样式
  lyr.LabelProperties.Style := map1.Layers.item['汽车服务'].LabelProperties.Style; //标签样式
  Vehiclelist := TStringList.Create;
  Vehiclelist := SelectedVehiclelist;
  for i := 0 to Vehiclelist.count - 1 do
  begin
    if DM.ClientDataSet.Locate('VehicleOID', Vehiclelist.Strings[i], []) then
    begin
      x := DM.ClientDataSet.FieldByName('LONGITUDE').AsFloat;
      y := DM.ClientDataSet.FieldByName('LATITUDE').AsFloat;
      str := DM.ClientDataSet.FieldByName('Name').AsString;
      direction := DM.ClientDataSet.FieldByName('direction').AsInteger;
      speed := DM.ClientDataSet.FieldByName('speed').AsFloat;
    end;
    pt.Set_(x, y);
    fts := map1.FeatureFactory.CreateSymbol(pt, mstyle); //创建特征
    fts.KeyValue := str; //标注
    lyr.AddFeature(fts, emptyparam); //将特征添加到层
  end;

  lyr.AutoLabel := true; //自动标注
  lyr.Visible := true; //可见
  lyr.ZoomMin := 0; //缩放范围
  lyr.ZoomMax := 80;
  Map1.CenterX := x;
  Map1.CenterY := y;
end;

 

mstyle.SymbolType := miSymbolTypeBitmap;
  mstyle.SymbolBitmapSize := 18;
  mstyle.SymbolBitmapTransparent := True;
  mstyle.SymbolBitmapName := 'car.BMP';
 // mstyle := map1.Layers.item['汽车服务'].AllFeatures.Item[1].Style; //此处获取在层“汽车服务”中存储的特征样式
  lyr.Style := map1.Layers.item['汽车服务'].Style; //层的样式
  lyr.LabelProperties.Style := map1.Layers.item['汽车服务'].LabelProperties.Style; //标签样式
  Vehiclelist := TStringList.Create;
  Vehiclelist := SelectedVehiclelist;
  for i := 0 to Vehiclelist.count - 1 do
  begin
    if DM.ClientDataSet.Locate('VehicleOID', Vehiclelist.Strings[i], []) then
    begin
      x := DM.ClientDataSet.FieldByName('LONGITUDE').AsFloat;
      y := DM.ClientDataSet.FieldByName('LATITUDE').AsFloat;
      str := DM.ClientDataSet.FieldByName('Name').AsString;
      direction := DM.ClientDataSet.FieldByName('direction').AsInteger;
      speed := DM.ClientDataSet.FieldByName('speed').AsFloat;
    end;
    pt.Set_(x, y);
    fts := map1.FeatureFactory.CreateSymbol(pt, mstyle); //创建特征
    fts.KeyValue := str; //标注
    lyr.AddFeature(fts, emptyparam); //将特征添加到层
  end;

  lyr.AutoLabel := true; //自动标注
  lyr.Visible := true; //可见
  lyr.ZoomMin := 0; //缩放范围
  lyr.ZoomMax := 80;
  Map1.CenterX := x;
  Map1.CenterY := y;
end;

转载于:https://www.cnblogs.com/xgxhellboy/archive/2012/11/23/2784091.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一套是一套非常完善的图形系统,适合在电力、煤炭、化工、仿真、网络、自动化等各种工业监控软件以及图形建模、图形管理、图形分析、中小型GIS系统、工作流、中文表格、表单、工程绘图等软件项目中应用。 下载网址:http://www.visual-graph.com/down 文档:http://www.visual-graph.com/article 截图示例:http://www.visual-graph.com/gallery Visual Graph经过近十年的深入研究与应用,有预见性地开发了大量具有潜在应用的功能,长期与用户互相合作,大量吸取用户应用经验,十多年的应用研究试验,Visual Graph终于被打造成图形应用领域里面的超级引擎,不断前进,在技术与质量上赢得了众多合作伙伴的心。Visual Graph 在可靠性、兼容性、易用性、扩展性、完备性、容错性等多方面均达到了工业级应用的水平,其技术主要特点是: 其图形系统的基本技术特点如下: 包含编辑与运行两种状态,既可以绘图,也可以任意操纵与控制图形变化。 图形和图库是统一的 XML 格式,便于传输、存储和维护,支持 WEB 开发。 容易开发复杂变化的图形,实现自己的图形库。 每个图形都是对象,拥有众多的属性和函数,可以方便地编辑和操纵。 图形拥有众多的操作事件,可以给图形添加自定义属性或自定义函数。 多页面、多图层、支持图形的逻辑分组。 可以建立和分析图形间的拓朴连接关系,实现各种逻辑运算与控制。 内含面向对象的 Visual Graph 脚本语言,10个COM 类库接口。 支持表格、报表、表单开发。 支持桌面GIS系统的开发、大尺寸地图的显示和数据管理。 支持读取互联网服务器图形文件, 支持图形从内存或数据库读写。 允许自定义箭头、自定义线型、自定义网纹、自定义多个文字标注、自定义提示窗口、自定义图元连接点、自定义图元控制点、自定义光标。 可以制作对话盒、子窗口、弹出式窗口、菜单等窗口素。 支持混合编程,不仅其他程序可以操控 Visual Graph 的技术,而且 Visual Graph 的脚本可以调用其他语言的程序,也可以调用 DLL,扩展功能。脚本语言的编程习惯和一般语言相同,各种属性、函数名称也基本相同,符合程序员的思维习惯。 可以给这些设备图形添加自定义属性,仪器仪表可以添加最小值、最大值、当前指针值等属性,改变这些属性,仪器仪表就会发生变化(例如指针旋转)。刀闸、开关可以添加开关属性,改变这个属性,开关的样式也发生相应的变化。信号灯可以添加当前状态属性,允许根据属性不同,信号灯的状态发生变化。这些在其他图形软件里面非得使用插件才能实现的功能 Visual Graph 在可靠性、兼容性、易用性、扩展性、完备性、容错性等多方面均达到了较高的水平。 可靠性: 用户主要是工业领域的有实力的软件公司或系统集成商,他们对软件的质量要求很高,首先,软件长期处于无人值守的运行状态下,所以,不能有任何隐患出现。其次,图形要及时响应硬件不断发出的指令,所以,反应速度要快。第三,要考察对方售后服务方面如何。我们现在已经拥有八十多家用户,其中很多都是行业内大名鼎鼎的软件公司或上市公司,每家公司在购买前都对我们进行了长期的考察。实践证明,用户对我们的产品质量和售后服务均非常满意。 兼容性: 软件不仅能在目前主流操作系统,如Windows NT、XP上优化运行,而且还完美兼容Windows98。在编程语言方面,软件提供的接口不仅能够支持VB、VC、Delphi、FoxPro、PowerBuilder、C++Builder、 C#、VB.net、VC.net、IE等不同的工作环境,而且提供了全部类库。要知道,在某些语言中,一些特殊的接口是无法识别和使用的, Visual Graph为此进行了精细设计,既照顾了方方面面不同的语言环境,同时编写程序还非常方便。 易用性: 程序员大都熟悉可视化编程,VB、Delphi、C#就是典型。Visual Graph设计思路和编程习惯非常类似这几种语言,对象的属性名称、函数名称都经过精心的设计,保证符合程序员的思维习惯。由于接口提供了完全的COM类库,当程序员在某个图形对象名后输入小数点时,立即出现下拉列表,里面列出了全部可用的属性和函数。图形文件采用标准XML而不是不可知的二进制格式,工作起来更放心。 扩展性: Visual Graph在图库设计方面是无与伦比的,它不象许多图形软件只能设计简单的组合图形,也不象许多软件必须提供插件才能实现个别复杂的图形,它的基本图形素虽然只有三种(字、形、线),却能够通过嵌套技术、脚本技术像变魔术般生成无穷无尽的万千图库,只要其他软件有的图形,在这里都能自行开发出来,不需要编写插件,这样就非常适合用于互联网。专业版更提供了特殊的方案,脚本可以回调程序员自己的函数,因此,Visual Graph不支持的技术,程序员可以自行实现。 完备性: Visual Graph充分考虑了用户方方面面的需求,把许多技术做到了极致,超前设计了许多许多功能,更能细致入微地体贴用户。对于具体应用来说,许多功能暂时可能不需要,但给将来的发展却打下了良好的基础。 容错性: Visual Graph充分考虑了用户打开的文件的有可能错误的,所以Visual Graph人性化地显示出错误提示。并且不会出现画面死机现象。如果画面脚本出现错误时,则会显示出脚本错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值