转自http://blog.163.com/zhengguo_li/blog/static/70301480200941694213633/

VB开发示例

MapGIS组件的使用方法与一般组件的使用方法完全相同,在使用MapGIS组件之前,必须先注册.安装完MapGIS的SDK开发包后,自动安装并注册了MapGIS组件.

在VB中使用MapGIS组件对象的步骤是:

(1)嵌入MapGIS对象类型库;

(2)建立MapGIS对象;

(3)调用MapGIS对象和其他VB对象的方法和属性完成GIS应用软件功能;

(4)释放MAPGIS对象.

下面的例子演示了如何使用MAPGIS组件(控件)进行GIS应用软件的开发.

(1)新建一个VB工程(标准EXE类型),“引用”程序中用到的组件和控件.为了使VB能够访问MAPGIS组件对象,需要在VB项目中嵌入MAPGIS对象类型库.执行下列步骤:从Project (工程)菜单中选择References(引用), References对话框出现后,选中所需的类型库:MapGISBasCom11.o Type Library和MapGISDspCom1.0 Type Library。(如下图)

再从Project (工程)菜单中选择Components (组件), Components对话框出现后,选中所需的控件,EditView ActiveX Control module是图形编辑控件。(如下图)

(2)添加EditView控件到Form上,命名为EditView

将区文件、线区文件或点区文件加载到EditView有两中方法,一是将区文件直接用Load方法,然后调用 Set EditView.RegArea = objRArea,二是用工程Map的形式加载,此处用方法二。

定义一个全局的Map

Public g_objPrjMap As MAPGISMAPCOMLib.Map

在Form Load的时候,将 g_objPrjMap 赋给 EditView.Map

Set EditView.Map = g_objPrjMap

接下去就是把区文件绑定到Map上,见下面函数:(此处以区为例)

Public Function AddLyrToMap(strLyrPath As String, strLyrName As String)

Dim objAddWArea As MAPGISBASCOM1Lib.WorkArea

Dim objRArea As New MAPGISBASCOM1Lib.RegArea

Dim objMapLyr As MAPGISLAYERCOMLib.MapLayer

If Not objRArea.Load(strLyrPath) Then

MsgBox "加载" & strLyrPath & "目录下的图层出错!", vbInformation, "系统提示"

Exit Function

End If

objRArea.Name = strLyrName

Set objAddWArea = objRArea

Set objMapLyr = New RegLayer

g_objPrjMap.AddLayer objMapLyr

g_objPrjMap.Layer(g_objPrjMap.MapLayerCount-1).Attach objAddWArea

Set objAddWArea = Nothing

Set objRArea = Nothing

Set objMapLyr = Nothing

End Function

AddLyrToMap函数可以这样调用:

Call AddLyrToMap(App.Path & "\Data\ST_XZQ.WP", "行政区")   '添加行政区图层

加载完地图后,要将地图复位:

'将Map全部显示

Public Sub RestoreEditView()

Dim objTempLyr As MAPGISLAYERCOMLib.MapLayer

Dim objRC      As MAPGISBASCOM1Lib.D_Rect

Dim i          As Integer

Set objTempLyr = g_objPrjMap.FindFirst(gisFINDTYPE_ALL)

If objTempLyr Is Nothing Then Exit Sub

Set objRC = objTempLyr.rect

For i = 0 To g_objPrjMap.MapLayerCount - 1

If (Not objTempLyr.WorkArea.Empty) And (objTempLyr.WorkArea.logCount > 0) Then

If (objRC.xmin > objTempLyr.rect.xmin) Then

objRC.xmin = objTempLyr.rect.xmin

End If

If (objRC.xmax < objTempLyr.rect.xmax) Then

objRC.xmax = objTempLyr.rect.xmax

End If

If (objRC.ymin > objTempLyr.rect.ymin) Then

objRC.ymin = objTempLyr.rect.ymin

End If

If (objRC.ymax < objTempLyr.rect.ymax) Then

objRC.ymax = objTempLyr.rect.ymax

End If

End If

Set objTempLyr = Nothing

Set objTempLyr = g_objPrjMap.FindNext()

Next

frmMapWin.EditView.SetWinMapRange objRC.xmin, objRC.ymin, objRC.xmax, objRC.ymax

frmMapWin.EditView.RestoreWindow

Set objTempLyr = Nothing

Set objRC = Nothing

End Sub

(3)得到统计区的属性值、面积等

由于区文件是以工程Map的形式绑定上来的,所以要取得区的属性,就要先得到工程Map 里的MapLayer,然后在得到RegArea,具体见下面函数:

Private Sub Command1_Click()

Dim i As Integer

Dim dblArea As Double    '统计面积

Dim objMapLay As MAPGISLAYERCOMLib.MapLayer

Dim objRArea  As New MAPGISBASCOM1Lib.RegArea

Dim objRecd   As MAPGISBASCOM1Lib.Record

Set objMapLay = New MAPGISLAYERCOMLib.RegLayer

Set objMapLay = g_objPrjMap.FindLayerByName("行政区")

Set objRArea = objMapLay.WorkArea

For i = 0 To objRArea.Count - 1

If (objRArea.RegAtt.Get(i, objRecd)) > 0 Then

Debug.Print objRecd.Item("XZQ_DM").Value

Debug.Print objRecd.Item("XZQ_DM").Value

dblArea = dblArea + objRecd.Item("Area").Value

End If

Next

Debug.Print dblArea

End Sub

(4)最后要释放MAPGIS对象

Set g_objPrjMap = Nothing

这个就是一个最基本的MapGIS程序了,可以把它称为“MapGIS的基石”,因为以后的程序都是在这个程序的基础上“缝缝补补”而来的。

来源:零度雪

mapgis组件开发vb示例相关推荐

  1. React Native组件开发指南

    React Native的组件开发一直处在一个比较尴尬的处境.在官方未给予相关示例与脚手架的情况下,社区中依然诞生了许许多多的React Native组件.因为缺少示例与规范,很多组件库仅含有一个in ...

  2. jsx怎么往js里传参数_实践Vue 3.0做JSX(TSX)风格的组件开发

    作者:莫夭 转发链接:https://zhuanlan.zhihu.com/p/102668383 前言 我日常工作都是使用React来做开发,但是我对React一直不是很满意,特别是在推出React ...

  3. react 组件连动效果_React组件开发中常见的陷阱

    React作为使用最广泛Web前端开发之一,在Web开发领域越来成熟和稳固.其新版本发布的Hook API/concept使得组件更加便捷易用.虽然如此,React开发中仍然有很多的陷阱值得每一位Re ...

  4. c# 无法加载oraops.dll_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础

    Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发.开发语言同样是基于.NET框架的C#语言或VB语言.Smart组件是Robotstudio软件中实现 ...

  5. ASP+COM 组件开发

    这篇文章主要是把ASP代码变成组件,开发者不仅是加快了ASP的速度,而且也能保护自己的代码. 下面,我们会来编写一个非常简单的组件,重点是知道怎样开发DLL组件,而不是其复杂的代码!这些都要靠你们自己 ...

  6. .net组件开发系列之武术系列 武术招数 控件生命周期与控件事件机制

    .net组件开发系列之武术系列 武术招数 控件生命周期与控件事件机制一.控件生命周期 先回述上篇,可能表述没有不清晰,也可能跨度大了点,好的,我们来一个循序渐进过程,大家都知道,武术都有招术的,先出什 ...

  7. Blazor 模板化组件开发指南

    翻译自 Waqas Anwar 2021年4月15日的文章 <A Developer's Guide To Blazor Templated Components> [1] 在我之前的一篇 ...

  8. 汉王云名片识别(SM)组件开发详解

    大家好,最近在DeviceOne平台上做了一个汉王云名片识别的功能组件.下面把我开发过程给大家做一个分享,希望可以帮助到大家. 下面我把我的思路给大家讲解一下. 1.找到我要集成的sdk,也就是汉王云 ...

  9. MIP 扩展组件开发手册

    本手册将向你展示,完成一个 MIP 扩展组件的开发需要做哪些事情.在此之前,我们假定你: 有一定的 HTML.CSS 和 JavaScript 基础 了解 AMD 的模块管理方式 熟悉版本管理工具 G ...

最新文章

  1. 【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
  2. swift 学习- 14 -- 继承
  3. MySQL via EF6 的试用报告
  4. 终极JPA查询和技巧列表–第3部分
  5. MIDL2020赛事object-CXR(胸部X射线异物检测大赛)
  6. Python 入门介绍
  7. 如何在电脑手机间互传文件?
  8. 红外倒车雷达原理图_黑科技 | 5分钟看懂无人驾驶汽车和激光雷达
  9. html 5拜年贺卡,HTML5+CSS3实现春节贺卡
  10. PT002(JspStudy)安装与端口解决问题
  11. 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名)
  12. 2019年畅销好书大盘点,有你喜欢的书吗?
  13. 虚拟机IP地址和主机IP不在同一个网段
  14. 2021-07-02
  15. 中国移动互联网半年大报告解析
  16. BigDecimal.ROUND_的各种用法
  17. 阿里面试应该注意什么?通过5轮面试的阿里实习生亲述
  18. 宝塔BT面板专业版(付费)和免费版有什么区别?
  19. [JVM]了断局: 说什么也没用,背就完了[必背]
  20. 操作系统(程序员必学简化版)

热门文章

  1. 数据分析实战(一) Pandas分析Kaggle电子游戏销量数据集
  2. PostgreSQL事物隔离级别之读未提交
  3. 2019华为软挑代码总结-交通规则模拟
  4. 目标检测 YOLO 系列模型
  5. zabbix功能介绍
  6. 操作系统安全---实验三:Windows7操作系统安全
  7. db2数据库常用语法及命令
  8. J2me技术——制作Pak文件
  9. 【备忘】史上最全LINUX之13套开发视频教程下载
  10. 蓝桥杯基础试题 字母图形 C语言实现