午夜男人想看的电影网站_ -|五黄├湟源交通局
淘宝减肥药排行榜十强
只推淘宝安全有效的减肥药

当前位置:午夜男人想看的电影网站 > 减肥产品

午夜男人想看的电影网站

时间:2020-07-14 19:27  编辑:临桂批发部

午夜男人想看的电影网站

SuperMap Objects 开发教程 (初级篇)

北京超图地理信息技术有限公司

2007年 10月 ·北京

版权所有 © 1998-2007,北京超图地理信息技术有限公司。

保留一切权力。

警告,本文档包含的所有内容是北京超图地理信息技术有限公司的财产,受到著作权法和国际 公约的保护。未得到本公司的书面许可,不能以任何方式(电子的或机械的,包括影印)翻印 或转载本文档的任何部分。

本文档并不代表供应商或其代理的承诺,北京超图地理信息技术有限公司可在不作任何申明的 情况下对本文档内容进行修改。

SuperMap 及徽标 是北京超图地理信息技术有限公司的注册商标。

SuperMap Objects的一切有关权利属于北京超图地理信息技术有限公司所有。

本手册中所涉及的软件产品及其后续升级产品均由北京超图地理信息技术有限公司制作并负责 全权销售。

本文当中提到的其它公司及其产品的商标所有权属于该商标的所有者。

北京超图地理信息技术有限公司联系方式:

地址:北京市海淀区学清路 8号科技财富中心 B 座 7层

邮编:100085

电话:+86-10-82736655

传真:+86-10-82734630

网址:http://www.supermap.com.cn

销售电子信箱:[email protected]

技术支持电子信箱:[email protected]

SuperMap

欢迎您的任何建议和意见。

目 录

第 1章 前 言 ............................................................................................................................... 1

1.1 入门教程能帮助你学会什么? . ............................................................................................. 1 1.2 适用对象 .................................................................................................................................. 1 1.3 涉及对象(含控件)和接口(属性、事件、方法) . ......................................................... 1 1.4 使用数据 .................................................................................................................................. 2 1.5 本书内容 .................................................................................................................................. 2

第 2章 VISUAL BASIC 6.0开发入门 ........................................................................................... 3

2.1 第一步:创建一个新工程:MyFirstSuperMap .................................................................... 3 2.2 第二步:加入 SuperMap Objects控件 . ................................................................................. 3 2.3 第三步:打开地图、添加图层 . ............................................................................................. 6 2.4 第四步:地图浏览功能 . ......................................................................................................... 8 2.5 第五步:地图到属性查询 . ..................................................................................................... 9 2.6 第六步:属性到地图查询 . ................................................................................................... 11

第 3章 DELPHI 7开发入门 ....................................................................................................... 13

3.1 第一步:创建一个新工程:MyFirstSuperMap .................................................................. 13 3.2 第二步:加入 SuperMap Objects 控件 . .............................................................................. 13 3.3 第三步:打开地图、添加图层 . ........................................................................................... 14 3.4 第四步:地图浏览功能 . ....................................................................................................... 16 3.5 第五步:地图到属性查询 . ................................................................................................... 18 3.6 第六步:属性到地图查询 . ................................................................................................... 19

第 4章 VISUAL C++ 6.0开发入门 ............................................................................................. 23

4.1 第一步:创建 Visual C++ 6.0工程:MyFirstSuperMap .................................................... 23 4.2 第二步:加载 SuperMap Objects 控件 . .............................................................................. 24 4.3 第三步:打开地图、添加图层 . ........................................................................................... 28 4.4 第四步:地图浏览功能 . ....................................................................................................... 33 4.5 第五步:地图到属性查询 . ................................................................................................... 35 4.6 第六步:属性到地图查询 . ................................................................................................... 36

第 5章 VISUAL BASIC .NET 2003开发入门 ........................................................................... 39 5.1 第一步:创建一个新工程:MyFirstSuperMap .................................................................. 39

SuperMap Objects初级开发教程

5.2 第二步:加入 SuperMap Objects 控件 . .............................................................................. 39 5.3 第三步:打开地图、添加图层 . ........................................................................................... 40 5.4 第四步:地图浏览功能 . ....................................................................................................... 43 5.5 第五步:地图到属性查询 . ................................................................................................... 44 5.6 第六步:属性到地图查询 . ................................................................................................... 46

第 6章 VISUAL C# .NET 2003开发入门 . .................................................................................. 49

6.1 第一步:创建一个新工程:MyFirstSuperMap .................................................................. 49 6.2 第二步:加载 SuperMap Objects 控件 . .............................................................................. 50 6.3 第三步:打开地图、添加图层 . ........................................................................................... 51 6.4 第四步:地图浏览功能 . ....................................................................................................... 54 6.5 第五步:地图到属性查询 . ................................................................................................... 56 6.6 第六步:属性到地图查询 . ................................................................................................... 58

第 7章 附录 ................................................................................................................................... 61

7.1 如何注册 SuperMap Objects 运行许可 ? ............................................................................ 61 7.2 如何随您的应用系统分发 SuperMap Objects? ................................................................... 61

第 1章 前 言

1.1入门教程能帮助你学会什么?

本教程通过实现一个简单程序, 帮助您了解如何使用 SuperMap Objects 控件开发应

用程序。阅读完本教程,您应该能够回答如下问题:

1. 如何把 SuperMap Objects控件添加到工程中?

2. 如何使用 SuperWorkspace 控件打开 SuperMap 数据源?

3. 如何把数据源中的一个数据集添加到地图窗口(SuperMap 控件)中显示?

4. 如何实现基本的地图浏览功能,比如:放大、缩小、漫游等?

5. 如何实现地图到属性的查询功能?

6. 如何实现属性到地图的查询功能?

同时,您还能理解:

1. 工作空间和数据源之间的关系。

2. 数据源和数据集之间的关系。

3. 数据集和图层之间的关系。

1.2适用对象

本书介绍了如何使用 SuperMap Objects COM 组件结合 Visual Basic 6.0、 Visual C++ 6.0、 Delphi 、 Visual Basic .NET 2003、 Visual C# .NET2003五种语言简单地实现 GIS 基本功能的开发, 因此本书适合于具备上述任一种语言基础和初次接触 SuperMap Objects COM 组件进行开发的 用户。

1.3涉及对象(含控件)和接口(属性、事件、方法)

SuperMap Objects初级开发教程

1.4使用数据

本程序演示用 SuperMap Objects 控件打开地图, 并对其进行基本操作和属性与地图 之间的双向查询。所用的数据为世界地图(World.sdb ),其中包括世界经纬网(Grid )、 各国首都(Capital )和世界地图(World )等多个地图图层,打开时,把所有图层加入 到 SupeMap 中显示。世界地图:World.sdb 、 World.sdd

1.5本书内容

本书是 SuperMap Objects开发入门教程,总共 7章,第 1章前言介绍本书的内容和 特点, 2到 6章分别介绍使用不同的开发语言如何实现加载 SuperMap Objects控件,基 于 SuperMap Objects控件实现地图浏览、地图到属性查询和属性到地图查询等基本 GIS 功能的开发过程,旨在指导开发人员快速掌握全组件式地理信息系统 SuperMap Objects的开发方法。本书包含目前最流行的 5种开发语言的入门教程内容,开发人员可以选择 阅读自己熟悉和喜欢的开发语言的入门教程。

第 2章 Visual Basic 6.0开发入门

2.1第一步:创建一个新工程:MyFirstSuperMap

1. 在本地磁盘下创建一个工作目录,如 C:\MyProject。

2. 从帮助文档 GettingStarted.chm 的首页中点击链接下载数据文件 World..zip (包含 World.sdb 和 World.sdd 文件)到工作目录 C:\MyProject下。

3. 启动 Microsoft Visual Basic 6.0。

4. 新建一个标准 EXE 工程,将其保存到工作目录 C:\MyProject 下,可命名为: MyFirstSuperMap ,默认创建的窗体可重新命名也可保持默认名称 Form1,将 Form1 的 Caption 设为 “SuperMap Objects 开发入门教程 ” 。

2.2第二步:加入 SuperMap Objects控件

1. 添加 SuperMap Objects 控件到 ToolBox (工具箱)

用 Ctrl+T快捷键或在 ToolBox (工具箱)上单击鼠标右键,点击 "Components..." 出现如下 对话框:

图 2.1 VB6加载控件窗口

使用空格键或直接用鼠标选中 “SuperMap Objects 2008 Core Controls” ,点击确定。此时, ToolBox 中出现图中所示两个控件。

图 2.2 加载控件后控件面板

2. 点击 SuperWokrspace 控件拉框放置到窗体 Form1 上任意位置(该控件运行时不可 见),之后点击 SuperMap 控件,拉框放置到窗体合理位置(该控件运行时将用于显 示地图)。

图 2.3 添加 SuperMap 控件后窗口

2.3第三步:打开地图、添加图层

在窗体中加入以下代码 :

Private Sub Form_Load()

'建立地图窗口与工作空间的联系,用于显示数据

SuperMap1.Connect SuperWorkspace1.Object

Dim strAlias As String '数据源别名

Dim nEngineType As seEngineType '数据源引擎类型

Dim strDataSourceName As String '数据源所在路径

Dim objDataSource As soDataSource '数据源对象 , 指向打开的数据源

Dim bReadOnly As Boolean '数据源是否只读打开

Dim objLayer As soLayer '图层对象变量 , 指向将要打开的图层

Dim bAddToHead As Boolean '是否将数据集加到地图最上一层显示

Dim i As Integer '数据集索引

strAlias = "MyDataSource" '别名可任意 , 但建议取数据源文件名相同的名称,便于区分

nEngineType = sceSDBPlus '可打开不同引擎的数据源,此处打开文件型 SDBPlus

strDataSourceName = "C:\MyProject\world.sdb" '数据源所在路径,也可以是相对路径

bReadOnly = False '非只读打开

'打开数据源

Set objDataSource = SuperWorkspace1.OpenDataSource(strDataSourceName, strAlias, nEngineType, bReadOnly)

If objDataSource Is Nothing Then

MsgBox "打开数据源失败! ", vbInformation

Else

For i = 1 To objDataSource.Datasets.Count

'把数据源中的所有数据集加入到 SuperMap 中显示

bAddToHead = True

Set objLayer = SuperMap1.Layers.AddDataset(objDataSource.Datasets.Item(i), bAddToHead)

Next

End If

'刷新地图窗口

SuperMap1.Refresh

'可定制选中对象风格,或保持默认

SuperMap1.selection.Style.PenColor = RGB(231, 77, 0)

SuperMap1.selection.Style.PenWidth = 1

SuperMap1.selection.Style.PenStyle = 1

SuperMap1.selection.Style.BrushStyle = 5

SuperMap1.selection.Style.BrushColor = RGB(115, 69, 140)

SuperMap1.selection.Style.BrushBackColor = RGB(239, 150, 255)

SuperMap1.selection.Style.BrushOpaqueRate = 50

'释放内存

Set objDataSource = Nothing

Set objLayer = Nothing

End Sub

Private Sub Form_Unload(Cancel As Integer)

SuperMap1.Close

SuperMap1.Disconnect

SuperWorkspace1.Close

End Sub

运行上述代码后会有如下的界面:

图 2.4 打开地图运行结果窗口

2.4第四步:地图浏览功能

利用 SuperMap Objects 控件,可以很方便地进行地图的基本操作,如放大、缩小、自由缩 放、漫游、全幅显示、画点、画线等等。下面以放大、缩小、自由缩放、漫游、全幅显示功能 为例予以说明。

首先:在窗体中加入五个按钮,设置如下的属性值(其余属性取默认值即可):

然后:在各个按钮的 Click 事件里加入以下代码,即可实现以上功能;

Private Sub cmdViewEntire_Click()

SuperMap1.ViewEntire

End Sub

Private Sub cmdZoomFree_Click()

SuperMap1.Action = scaZoomFree

End Sub

Private Sub cmdZoomIn_Click()

SuperMap1.Action = scaZoomIn

End Sub

Private Sub cmdZoomOut_Click()

SuperMap1.Action = scaZoomOut

End Sub

Private Sub cmdPan_Click()

SuperMap1.Action = scaPan

End Sub

下图即为放大时的效果。

图 2.5 地图浏览功能运行结果窗口 2.5第五步:地图到属性查询

首先,在窗体中加入一个按钮并设置它的属性值:

然后,在其 Click

Private Sub cmdSelect_Click()

SuperMap1.Action = scaSelect

End Sub

为了实现点击 “ 图查属性 ” 按钮时显示对象的属性信息,当选中对象后,触发 SuperMap 的 GeometrySelected() 事件,在该事件中键入图查属性的代码:

Private Sub SuperMap1_GeometrySelected(ByVal nSelectedGeometryCount As Long) Dim objRecordSet As soRecordset '属性对象

Dim i As Integer ' 循环变量

Dim strName(40) As String '存储属性名

Dim strValue(40) As String '存储属性值

Dim strMessage As String '显示所有信息

Set objRecordSet = SuperMap1.Selection.ToRecordset(False ) '提取所选对象的属性数 据

objRecordSet.MoveFirst '移到第一条属性

For i = 1 To objRecordSet.FieldCount

strName(i - 1) = objRecordSet.GetFieldInfo(i ) .Name '得到属性名 strValue(i - 1) = objRecordSet.GetFieldValue(i ) '得到属性值 Next

strMessage = ""

For i = 1 To objRecordSet.FieldCount

strMessage = strMessage & strName(i ) & ": " & strValue(i ) & Space(5) & vbCrLf

Next

MsgBox strMessage

Set objRecordSet = Nothing '释放内存

End Sub

下图是图查属性时的效果:

2.6第六步:属性到地图查询

1. 在窗体中加入一个文本标签(Label )、一个按钮(button )和一个文本框(TextBox ), 并设置它们的属性值如下:

2. 在按钮的 Click

Private Sub cmdQueryMap_Click()

Dim objDs As soDataSource '数据源

Dim objDtVector As soDatasetVector '矢量数据集

Dim objRecordset As soRecordset '记录集

Dim objSelection As soSelection '选择集

图 2.6地图到属性查询运行结果窗口

'取矢量数据集:取其中面数据集 "World" 进行查询

Set objDs = SuperWorkspace1.Datasources.Item("MyDataSource")

If objDs Is Nothing Then Exit Sub

Set objDtVector = objDs.Datasets("World")

If objDtVector Is Nothing Then

MsgBox "打开数据集错误 ", vbInformation

Exit Sub

End If

'使用 SQ L过滤条件安从数据集中查询出记录集, SQL 条件的 WHERE 子句部分从编辑框中获取。 ( Query 方法只适用于 soDatasetVector 类对象 )

Set objRecordset = objDtVector.Query(txtExpression.Text, True)

If objRecordset Is Nothing Then

Exit Sub

Else

'将查询结果加入到选择集中,使其高亮显示

Set objSelection = SuperMap1.selection

objSelection.FromRecordset objRecordset

'刷新地图窗口

SuperMap1.Refresh

End If

Set objDtVector = Nothing

Set objRecordset = Nothing

Set objSelection = Nothing

End Sub

3. 在编辑框中输入查询条件:smid>50,单击”属性查图”按钮,得到如下结果:

图 2.7属性到地图查询运行结果窗口

第 3章 Delphi 7开发入门

3.1第一步:创建一个新工程:MyFirstSuperMap

1. 在本地磁盘下创建一个工作目录,如 C:\MyProject。

2. 从帮助文档 GettingStarted.chm 的首页中点击链接下载数据文件 World..zip (包含 World.sdb 、 World.sdd 文件)到工作目 C:\MyProject。

3. 启动 Delphi 7。

4. 在工作目录 C:\MyProject下创建一个新工程 : MyFirstSuperMap。

5. 在工作目录 C:\MyProject 下创建一个新工程:MySuperMap , 并将窗体命名为 frmmap , 标题命名为 “SuperMap Objects 开发入门教程 ” 。

3.2第二步:加入 SuperMap Objects 控件

1. 添加 ActiveX 控件到 Component Palette 的 ActiveX 栏上

找到 SuperMap 带的 SuperMap5.dpk 文件,此文件通常在 SuperMap 安装目录的

Bin\InterfaceClass\目录下面,在 delphi 中打开该文件,将出现如下的对话框。

图 3.1 打开 SuperMap5.dpk 文件窗口

如果您之前已经在 delphi 中加载过 SuperMap 的部分控件, 可以先移出以前加载的控件, 然 后点击” Install ”按钮。

安装提示成功后, SuperMap Objects 全组件式系统在 Delphi 上的安装就完成了。安装成功 在控件板上的 ActiveX 页上将出现如下图标:

图 3.2 加载 SuperMap 控件后控件面板

第一次使用 SuperMap Objects组件在 Delphi 中进行开发时,需在菜单 Project/Options中设 置类型库文件搜索路径,具体在 Options 的 Directories/conditionals选项卡上 Search Path中定位 至 SuperMap Objects的安装路径:/Bin/InterfaceClass下,至此 SuperMap Objects全组件式系统 在 Delphi 上的安装就完成了。

2. 将 SuperWorkspace 控件和 SuperMap 控件加到窗体上。

3.3第三步:打开地图、添加图层

在单元中加入如下代码:

procedure Tfrmmap.FormCreate(Sender: TObject);

var

strAlias:String ; //数据源别名

nEngineType:seEngineType; //数据源引擎类型

strDataSourceName:String; //数据源所在路径

objDataSource:soDataSource; //数据源对象 , 指向打开的数据源

bReadOnly:Boolean; //数据源是否只读打开

objLayer:soLayer; //图层对象变量 , 指向将要打开的图层

bAddToHead:Boolean; //是否将数据集加到地图最上一层显示

i:Integer; //数据集索引

begin

//建立地图窗口与工作空间的联系,用于显示数据

supermap1.Connect(superworkspace1.handle);

strAlias:='MyDatasource'; //别名可任意 , 但建议取数据源文件名相同的名称,便于区分

nEngineType:=sceSDBPlus; //可打开不同引擎的数据源,此处打开文件型 SDBPlus

strDataSourceName:='c:\myproject\world.sdb';

bReadOnly:=false; //非只读打开

//打开数据源

objDataSource:=SuperWorkspace1.OpenDataSource(strDatasourceName,strAlias,nEngineType

,bReadOnly);

if objDataSource=nil then

begin

MessageBox(frmmap.handle, '打开数据源失败! ', 'SuperMap Objects 开发入门教程 ', MB_OK); MessageBox(frmmap.handle,'如果没有下载数据源,请先下载示范数据 (world.sdb,world.sdd)到当 前程序目录 C:\MyProject 下。 ', 'SuperMap Objects 开发入门教程 ', MB_OK);

end

else

begin

//将数据源中所有图层加到 SuperMap 中显示

for i:=1 to objDataSource.Datasets.Count do

begin

bAddToHead:=true; //加到地图的最上层

objLayer:=SuperMap1.Layers.AddDataset(objDataSource.Datasets.Item[i], bAddToHead);

end;

//刷新地图

Supermap1.Refresh;

//可定制选中对象风格,或保持默认

supermap1.selection.Style.PenColor := RGB(231, 77, 0);

supermap1.selection.Style.PenWidth := 1;

supermap1.selection.Style.PenStyle := 1;

supermap1.selection.Style.BrushStyle := 5;

supermap1.selection.Style.BrushColor := RGB(115, 69, 140);

supermap1.selection.Style.BrushBackColor := RGB(239, 150, 255);

supermap1.selection.Style.BrushOpaqueRate := 50;

end

end;

procedure Tfrmmap.FormClose(Sender: TObject; var Action: TCloseAction);

begin

//关闭地图窗口及工作空间

SuperMap1.Close;

SuperMap1.Disconnect;

SuperWorkspace1.Close;

SuperMap1.Free;

SuperWorkspace1.Free;

end;

运行以上代码后将出现如下界面:

图 3.6 打开地图运行结果窗口

3.4第四步:地图浏览功能

利用 SuperMap 控件,可以很方便地进行地图的基本操作,如放大、缩小、自由缩放、漫 游、全幅显示、画点、画线等等。下面以放大、缩小、自由缩放、漫游、全幅显示功能为例予 以说明。

首先:在窗体中加入五个按钮,设置如下的属性值(其余属性取默认值即可):

procedure Tfrmmap.btViewEntireClick(Sender: TObject); begin

//查看全图

supermap1.ViewEntire;

end;

procedure Tfrmmap.btZoomInClick(Sender: TObject); begin

//放大

Supermap1.Action:=scaZoomIn;

end;

procedure Tfrmmap.btZoomOutClick(Sender: TObject); begin

//缩小

Supermap1.Action:=scaZoomOut;

end;

procedure Tfrmmap.btZoomFreeClick(Sender: TObject); begin

//自由缩放

Supermap1.Action:=scaZoomFree;

end;

procedure Tfrmmap.btPanClick(Sender: TObject);

begin

//漫游

Supermap1.Action:=scaPan;

end;

下图即为一放大时的效果:

图 3.7地图浏览功能运行结果窗口

3.5第五步:地图到属性查询

首先,在窗体中加入一个按钮并设置它的属性值:

在 “

GeometrySelected() 事件,在其中实现通过点击对象,查看其属性的功能,代码如下:

procedure Tfrmmap.btPropertyClick(Sender: TObject) ;

begin

//查询地图属性

Supermap1.action:=scaSelect;

end;

procedure Tfrmmap.SuperMap1GeometrySelected(Sender: TObject;nSelectedGeometryCount:Integer) ;

var

objRecordSet:soRecordset; //属性对象

i,j:Integer; //循环变量

strName:array[1..4] of string; //存储属性名

strValue:array[1..4] of String; //存储属性值

strMessage:String; //显示所有信息

begin

//先将选中对象转换为记录集对象

objRecordSet:=Supermap1.Selection.ToRecordset(false ) ;

objRecordSet.MoveFirst;

//读取字段数

j:=objRecordSet.FieldCount;

//如果记录集多于 4个字段,则只读前四个字段

if j>4 then

j:=4;

//只显示前四个字段

for i:=1 to j do

begin

strName[i]:=objRecordSet.GetFieldInfo(i ) .Name;

strValue[i]:=objRecordSet.GetFieldValue(i ) ;

end;

strMessage:='';

for i:=1 to j do

begin

strMessage:=strMessage+strName[i]+ ':'+strValue[i]+' '+ chr (VK_return) ; showMessage(strMessage ) ;

end;

end;

下图是图查属性的效果:

图 3.8 地图到属性查询运行结果窗口

3.6第六步:属性到地图查询

1. 在窗体中加入一个文本标签、一个按钮和一个编辑框,并设置它们的属性值如下:

2.

procedure Tfrmmap.btQueryMapClick(Sender: TObject);

var

objDataSource:soDatasource; //数据源

objDtVector:soDatasetVector; //矢量数据集变量

objRecordset:soRecordset; //属性数据集变量

objSelection:soSelection; //选择集变量

strOptions:widestring;

objerrors:soerror;

objGeo:soGeometry;

begin

//将 Supmap 控件的 Action 设为空

Supermap1.Action:=scaNull;

if SuperWorkspace1.Datasources.count=0 then

exit;

//取矢量数据集

objDataSource:=SuperWorkspace1.Datasources.Item[1];

if objDataSource= nil then

begin

showMessage('数据源错误 '+objerrors.LastErrorMsg );

Exit;

end;

objDtVector:=objDataSource.Datasets.Item[2] as soDataSetVector;

if objDtVector=nil then

begin

showMessage('打开数据集错误 '+objerrors.LastErrorMsg );

Exit

end;

try

//从数据集中查询出属性数据

objRecordset:=objDtVector.Query(editExpression.Text, true, nil, '') as soRecordset;

if objRecordset=nil then

exit

else

begin

//把查到的数据加入到选择集中 (使其呈被选中状态 )

objSelection:=SuperMap1.Selection;

objSelection.FromRecordset(objRecordset);

//刷新地图窗口

SuperMap1.Refresh ;

exit;

end;

except

MessageBox(frmmap.Handle,'查询失败! ',' 错误 ',MB_RETRYCANCEL+MB_ICONERROR) end;

end;

3. 在编辑框中输入查询条件:smid<50,单击 " 属性查图 " 按钮,得到如下结果:

图 3.9属性到地图查询运行结果窗口

第 4章 Visual C++ 6.0开发入门

4.1第一步:创建 Visual C++ 6.0工程:MyFirstSuperMap

1. 在本地磁盘下创建一个工作目录,如 C:\MyProject。

2. 从帮助文档 GettingStarted.chm 的首页中点击链接下载数据文件 World..zip (包 含 World.sdb 、 World.sdd 文件)到工作目 C:\MyProject;

3. 启动 Visual C++ 6.0新建工程。执行 File -> New菜单弹出下图窗口,切换到

Projects 页面选项,选择“ MFC AppWizard(exe )” Project 类型, Location 项 使用路径定位功能定位到 C:\Myproject, Project name项写入 MySuperMap ,点

击“ OK ”按钮进入下一步。

图 4.1 Visual C++新建工程窗口

4. 选择应用类型。新建工程的第二步是选择应用类型,如下图所示选择第三项” Dialog based ”然后点击” Finish ”按钮完成新建 Project 。

图 4.2 选择工程类型窗口

4.2第二步:加载 SuperMap Objects 控件

加载 SuperMap Objects 控件到工程中(Project ):

1. 用鼠标单击 Project 菜单下的 ” “ Add To Project”命令下的 ” Components and Controls Gallery” 。

图 4.3 加载组件执行菜单

2. 用鼠标双击” Registered ActiveX Controls”目录,选择 SuperMap 控件。如下图 对话框:

图 4.4 加载 SuperMap 组件窗口

3. 点击“ Insert ”按钮,系统弹出消息框询问是否插入这个组件,点击确定,然后

出现如下对话框,单击“ OK ”,如下图:

图 4.5 Inser类

这样 “ SuperMap Control” 就被添加进工程里了, 同样的方法添加 “ SuperWorkspace Control” 。 关闭选择控件的对话框,这时 ToolBox 中就会多出图中所示两个控件:

图 4.6 加载 SuperMap 、 SuperWorkSpace 控件后 Control 面板

4. 通过上述步骤,有些类仍然添加不进来,需要通过以下步骤添加,选择菜单

View -> ClassWizard...,弹出对话框如下:单击 Add Class按钮,选择 From a

Type Library:

图 4.7添加类菜单 然后选择安装目录下的 Bin\TypeLibrary\SuperMap.tlb:

图 4.8 选择 SuperMap 类库

点击 “Open” 后, 弹出对话框, 选中所有的类, 单击 OK 。 之后点击 OK 关闭 MFC ClassWizard 对话框。

图 4.9 选择类窗口

4.3第三步:打开地图、添加图层

1. 在当前对话框上(如果当前对话框没有打开,则可以从 VC 的工作空间管理器的 ResourceView 页中找到 ID 为 IDD_MYSUPERMAP_DIALOG 的对话框,并打开) 添加 SuperWorkSpace 控件, ID 取名 IDC_SuperWorkspace, 添加 SuperMap 控件, ID 取名为 IDC_SuperMap。

2. 在对话框上选中“ SuperMap ”控件,单击右键,选择“ ClassWizard ...”(如下图)

图 4.10 ClassWizard菜单

在弹出的“ MFC ClassWizard”对话框上选择“ Member Variables”页,双击“ Control IDs:”列 表框中的 IDC_SuperMap,或者点击选中 IDC_SuperMap后点击“ Add Variable... ”按钮,进行变 量关联,如下图:

图 4.11添加 SuperMap 类

点击“ OK ”按钮,如下图可以在“ MFC ClassWizard”对话框中看到增加的变量,同样的方法, 为“ IDC_SuperWorkspace”关联变量“ m_SuperWorkspace” ,最后点击“ OK ” ,关闭“ MFC ClassWizard ” 。

图 4.12 WFC ClassWizard

3. 在“ MySuperMapDlg.cpp ”头部添加下列头文件:

#include "sodatasource.h"

#include "sodatasources.h"

#include "sorecordset.h"

#include "sofieldinfo.h"

#include "sodatasets.h"

#include "sodataset.h"

#include "solayers.h"

#include "solayer.h"

#include "soselection.h"

#include "sodatasetvector.h"

#include "sostyle.h"

4. 在“ CMySuperMapDlg ”类的“ OnInitDialog()”函数的“ return TRUE;”前添加如下代 码:

//打开地图并显示

CsoDataSource objDataSource;

CsoDatasets objDataSets;

long Index;

//建立工作空间及数据源的联系

LPDISPATCH handle = m_SuperWorkspace.GetHandle ();

m_SuperMap.Connect(handle);

handle->Release();

//打开数据源, 14表示 SDB+引擎据

objDataSource=m_SuperWorkspace.OpenDataSource("C:\MyProject\world.sd b","world",14,false);

if (! objDataSource)

{

MessageBox("打开数据源出错 !");

m_SuperMap.Close();

m_SuperMap.Disconnect();

m_SuperWorkspace.Close();

return FALSE;

}

objDataSets=objDataSource.GetDatasets();

//添加图层

for(Index=1;Index<=objDataSets.GetCount();Index++)

{

m_SuperMap.GetLayers().AddDataset(objDataSets.GetItem(COleVariant(Inde x)),false);

}

//刷新 , 显示

m_SuperMap.Refresh();

//修改选中对象风格

CsoStyle objStyle = m_SuperMap.GetSelection().GetStyle();

objStyle.SetPenColor(RGB(231,77,0));

objStyle.SetPenStyle(1);

objStyle.SetPenWidth(1);

objStyle.SetBrushStyle(5);

objStyle.SetBrushColor(RGB(115,69,140));

objStyle.SetBrushBackColor(RGB(239,150,255));

objStyle.SetBrushOpaqueRate(50);

m_SuperMap.GetSelection().SetStyle(objStyle);

运行代码后弹出如下界面:

4.4第四步:地图浏览功能

利用 SuperMap 控件,可以很方便地进行地图的基本操作,如放大、缩小、自由缩放、漫游、 全幅显示、画点、画线等等。下面以放大、缩小、自由缩放、漫游、全幅显示功能为例予以说 明。

1. 在窗体中加入五个按钮,设置如下的属性值(其余属性取默认值即可):

2. 在对话框中为这五个按钮添加响应处理函数,并把下列代码分别添加到对应的各个处 理函数中:

图 4.13打开地图运行结果窗口

void CMySuperMapDlg::OnButtonPan()

{

//漫游

m_SuperMap.SetAction(1) ;

}

void CMySuperMapDlg::OnButtonZoomIn() {

//放大

m_SuperMap.SetAction (2) ;

}

void CMySuperMapDlg::OnButtonZoomOut() {

//缩小

m_SuperMap.SetAction (3) ;

}

void CMySuperMapDlg::OnButtonZoomFree() {

//自由缩放

m_SuperMap.SetAction(4) ;

}

void CMySuperMapDlg::OnButtonViewEntire() {

//全幅显示

m_SuperMap.ViewEntire() ;

}

下图为地图放大时的效果:

图 4.14地图浏览功能运行结果窗口

4.5第五步:地图到属性查询

1. 在窗体中加入一个按钮并设置它的属性值:

2. 在对话框中添加该按钮的响应处理函数,将下列代码添加到函数:

//图查属性

m_SuperMap.SetAction(5) ;

3. 通过“ MFC ClassWizard”在对话框中添加 SuperMap 控件“ GeometrySelected ”消息的 处理函数“ OnGeometrySelectedSuperMap(long nSelectedGeometryCount)”,在函数中 加入如下代码:

CsoRecordset Record;

CsoFieldInfo Info;

long Index;

COleVariant var;

CString strName;

CString strValue;

CString strMsg;

//转化为属性集

Record=m_SuperMap.GetSelection().ToRecordset(false);

strMsg="";

//获得属性名与属性值

for(Index=1;Index<=Record.GetFieldCount();Index++)

{

Info=Record.GetFieldInfo(COleVariant(Index));

strName=Info.GetName();

var=Record.GetFieldValue(COleVariant(Index));

var.ChangeType(VT_BSTR);

strValue=var.bstrVal;

strMsg =strMsg + strName + ":" + strValue + "\n";

}

//显示属性

MessageBox(strMsg);

下图是图查属性时的效果:

图 4.15地图到属性查询运行结果窗口

4.6第六步:属性到地图查询

1. 在窗体中加入一个静态文本 (Static Text) 、 一个按钮 (button ) 和一个编辑框 (Edit Box) , 并设置它们的属性值如下:

2. 在对话框中添加 ' ‘ IDC_ButtonQueryMaps’的响应处理函数,把下列代码添加到处理 函数中,再使用“ MFC ClassWizard”将“ IDC_Edit”关联为字符串类型变量

“ m_QueryCondition”:

//属性查图

UpdateData(true);

CsoDatasetVector objDtVector; //矢量数据集变量

CsoDataset objDt;

CsoRecordset objRecordset; //属性数据集变量

CsoDatasets objDtSets;

CsoDataSource objDataSource;

。

猜你喜欢

最安全有效的减肥药

最安全有效的减肥药

编辑:小徐

现在的减肥药真的是真假难分,在选择减肥药的同时也应该更加小心,减肥药多种多样,那么如何才能选择最安全有效的减肥药,也成了很多小仙女的内心疑问,下面就跟着午夜男人想看的电影网站小编一起看一下,如何选择最安全有效的减肥药。 最安全有效的减肥药选购方法 1、首先需要观察产品的外包装,在包装中可以看到其配方是不是含有激素,含有激素的减肥药对身体的内..

吃减肥药失眠

吃减肥药失眠

编辑:小徐

随着现在流行以瘦为美,很多人会不顾身体的健康选择减肥药,达到快速减肥瘦身的效果,但是很多减肥药都是有副作用的,副作用比较轻的就是失眠现象,那么吃减肥药出现失眠是怎么回事儿?如果出现失眠后,我们应该怎样缓解? 吃减肥药失眠是怎么回事 减肥药中富含安非他命,所以减肥药服用了太多会有失眠现象,服用减肥药期间,身体会逐渐出现抗药性,身..

最新文章