mapgis组件开发vb示例
转自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示例相关推荐
- React Native组件开发指南
React Native的组件开发一直处在一个比较尴尬的处境.在官方未给予相关示例与脚手架的情况下,社区中依然诞生了许许多多的React Native组件.因为缺少示例与规范,很多组件库仅含有一个in ...
- jsx怎么往js里传参数_实践Vue 3.0做JSX(TSX)风格的组件开发
作者:莫夭 转发链接:https://zhuanlan.zhihu.com/p/102668383 前言 我日常工作都是使用React来做开发,但是我对React一直不是很满意,特别是在推出React ...
- react 组件连动效果_React组件开发中常见的陷阱
React作为使用最广泛Web前端开发之一,在Web开发领域越来成熟和稳固.其新版本发布的Hook API/concept使得组件更加便捷易用.虽然如此,React开发中仍然有很多的陷阱值得每一位Re ...
- c# 无法加载oraops.dll_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础
Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发.开发语言同样是基于.NET框架的C#语言或VB语言.Smart组件是Robotstudio软件中实现 ...
- ASP+COM 组件开发
这篇文章主要是把ASP代码变成组件,开发者不仅是加快了ASP的速度,而且也能保护自己的代码. 下面,我们会来编写一个非常简单的组件,重点是知道怎样开发DLL组件,而不是其复杂的代码!这些都要靠你们自己 ...
- .net组件开发系列之武术系列 武术招数 控件生命周期与控件事件机制
.net组件开发系列之武术系列 武术招数 控件生命周期与控件事件机制一.控件生命周期 先回述上篇,可能表述没有不清晰,也可能跨度大了点,好的,我们来一个循序渐进过程,大家都知道,武术都有招术的,先出什 ...
- Blazor 模板化组件开发指南
翻译自 Waqas Anwar 2021年4月15日的文章 <A Developer's Guide To Blazor Templated Components> [1] 在我之前的一篇 ...
- 汉王云名片识别(SM)组件开发详解
大家好,最近在DeviceOne平台上做了一个汉王云名片识别的功能组件.下面把我开发过程给大家做一个分享,希望可以帮助到大家. 下面我把我的思路给大家讲解一下. 1.找到我要集成的sdk,也就是汉王云 ...
- MIP 扩展组件开发手册
本手册将向你展示,完成一个 MIP 扩展组件的开发需要做哪些事情.在此之前,我们假定你: 有一定的 HTML.CSS 和 JavaScript 基础 了解 AMD 的模块管理方式 熟悉版本管理工具 G ...
最新文章
- 【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
- swift 学习- 14 -- 继承
- MySQL via EF6 的试用报告
- 终极JPA查询和技巧列表–第3部分
- MIDL2020赛事object-CXR(胸部X射线异物检测大赛)
- Python 入门介绍
- 如何在电脑手机间互传文件?
- 红外倒车雷达原理图_黑科技 | 5分钟看懂无人驾驶汽车和激光雷达
- html 5拜年贺卡,HTML5+CSS3实现春节贺卡
- PT002(JspStudy)安装与端口解决问题
- 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名)
- 2019年畅销好书大盘点,有你喜欢的书吗?
- 虚拟机IP地址和主机IP不在同一个网段
- 2021-07-02
- 中国移动互联网半年大报告解析
- BigDecimal.ROUND_的各种用法
- 阿里面试应该注意什么?通过5轮面试的阿里实习生亲述
- 宝塔BT面板专业版(付费)和免费版有什么区别?
- [JVM]了断局: 说什么也没用,背就完了[必背]
- 操作系统(程序员必学简化版)