>>> 您现在的位置: 中国交通技术网 >> 资料文库 >> 3S技术 >> GIS >> 正文

在VC++中嵌入MapX的集成二次开发

更新时间:2007-8-27  来源:tranbbs  作者:佚名  人气:  [ 投稿 ] [投稿帮助
     结合GIS工具软件与当今可视化开发语言的集成二次开发方式是GIS应用开发的主流。它的优点是既可以充分利用GIS工具软件对空间数据库的管理、分析功能,又可以利用其它可视化开发语言具有的高效、方便等编程优点,集二者之所长……

  MapX是MapInfo公司向用户提供的具有强大地图分析功能的ActiveX控件产品。由于它是一种基于Windows操作系统的标准控件,因而能支持绝大多数标准的可视化开发环境如Visual C++、Visual Basic、Delphi、PowerBuilder等。编程人员在开发过程中可以选用自己最熟悉的开发语言,轻松地将地图功能嵌入到应用中,并且可以脱离MapInfo的软件平台运行。这里谈到的VC++嵌入MapX进行二次开发可分为以下几个步骤来实现:

  1 对应用工程的预设置

  在创建MapX控件之前,必须将MapX.h和MapX.cpp文件加入到工程中。对于Visual C++5.0及以上版本,从Project菜单中选择Add To Project -> Files命令,打开InsertFiles into Project对话框,选择MapX.cpp和MapX.h文件加入到工程中(在MapX自带的C++例子中有这两个文件)。

  注意:不要选择Project菜单中的Add TO Project->Components And Controls命令。如果选择该命令加入MapX控件,将创建一新的.cpp文件,但是该文本没有包括所有的MapX对象。

  2 对MapX属性的操作

  对于C++程序来说,每个MapX对象(Objects)都在MapX.h 和 MapX.cpp中用一个类来实现,类的名字和MapX对象的名字相同,且已经在CmapX中定义了。

  例如,DataSet对象用类CmapXDataset实现。这和C++类的定义相一致。而每个MapX对象的属性(Properties)是用类的成员函数来实现的。比如DataSet对象的名字(Name),就是用Name()函数来实现的,不过,Name()有两种使用方法,即Get和Set。如:

  CString GetName();//获取对象名字

  void SetName(LPCTSTR);//设置对象名字 

  3 部分MapX工具的应用

  (1) “全图”工具的改进

  一般全图工具的代码为:

  m_ctrlMapX.SetZoom(m_ctrlMapX.GetGeoSetWidth());

  此方法的缺点是重新显示全图后,实际上是以上一个视图的中心作为屏幕中心进行显示,如果上一个视图在全图中的边缘位置,点击全图工具后实际上不是初始设置的全图。因此可以用如下代码实现:

  CString mapname=m_ctrlMapX.GetGeoSet();//取得当前地图的名字

  m_ctrlMapX.SetGeoSet(mapname);//设置该地图为主视区显示图

  (2) 创建“信息”工具

  MapX没有提供信息工具,该工具是自定制工具。有两种实现方法,其基本思想是:

  (1) 创建工具的鼠标指针类型(一般为“+”),当在工具栏上选择此工具后,设置为当前工具,然后跟踪鼠标在地图上点击的位置,触发ToolUsed事件,根据位置信息确定相应的对象,然后读取对象属性或绑定的数据库,弹出对话框,实现信息显示。此种方法只适用于显示地图的最上层对象(在MapX自带的C++例子“Buffer”中有具体实现代码)。

  (2) 用选择工具选中地图上所要显示信息的对象,然后再点击工具栏上的信息工具,弹出对话框,实现信息显示。此信息工具的实现代码与(1)不同,没有鼠标指针,实际上就是读取选中对象的属性或绑定的数据库的操作。此方法适合显示地图上的任意图层。

  两种方法各有特点,第一种方法直接,但在实际应用中容易出现异常,第二种方法要多点击一次,但应用稳定,而且适用地图上的任意图层。

  (3) “测距”工具的使用注意事项

  MapX的Distance()函数是针对地球地图的,在非地球地图中使用要注意数值转换。否则测出的数据与实际相差甚远。


  4 用MapX进行GIS二次开发


  (1) 创建数据库

[1] [2] 下一页

  特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。本站所有技术文章、专业软件资料仅供技术人员、高校师生学习交流之用,目的旨在促进与提高中国的交通技术水平;用户获取后不得用于商业目的,否则,所产生的法律责任本站概不负责。
责任编辑:七星
发表评论】【加入收藏】【打印此文
相关内容
MO2.2 + VC 经验小结
MapObjects开发技术 (VC++)
VC++实现GPS全球定位系统定位数据的提取
>>> 热点资料
·徐州市主城区轨道线网规划
·智能交通电子警察与城市道路监控系统
·哈尔滨市举办2009年大冬会交通规划探讨
·公交智能化整体方案(大量实际效果图)
·微观交通仿真并行化方法与策略_
·安蒙德机动车视频电子警察系统解决方案--纯视频机
·中小城市交通特性与交通模式研究
·DynaCHINA动态网络交通分析与实时路况预测软件介
·长沙市城区道路交通拥堵的特点、成因及对策
·试论大型活动的交通保卫与交通组织
>>> 推荐资料
·区域停车诱导系统解决方案
·哈尔滨市举办2009年大冬会交通规划探讨
·DynaCHINA动态网络交通分析与实时路况预测软件介
·中国射频识别(RFID)技术政策白皮书
·伦敦市道路拥挤收费政策解析
·香港地铁屏蔽门系统考察研究
·我国城市轨道交通主要投融资模式及创新思路
·加拿大留学申请程序
·国家地理信息标准化“十一五”规划
·美国地方政府的规划实践(1)
>>> 交通图库

四层车道桥,你还见过更高的吗?

太阳能急转标志牌

太阳能施工导向车(推拉式)

太阳能施工导向牌
>>> 博客交通
·区域停车诱导系统解决方案
·哈尔滨市举办2009年大冬会交通规划探讨
·DynaCHINA动态网络交通分析与实时路况预测软件介
·中国射频识别(RFID)技术政策白皮书
·伦敦市道路拥挤收费政策解析
·香港地铁屏蔽门系统考察研究
·我国城市轨道交通主要投融资模式及创新思路
·加拿大留学申请程序
·国家地理信息标准化“十一五”规划
·美国地方政府的规划实践(1)
网友评论:(评论内容只代表网友观点,与本站立场无关!)
  请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。