MapObjects学习笔记.doc_第1页
MapObjects学习笔记.doc_第2页
MapObjects学习笔记.doc_第3页
MapObjects学习笔记.doc_第4页
MapObjects学习笔记.doc_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一讲 MO概述及程序设计入门一、概述1、简介MapObject是由美国的ESRI(Environment System Research Institute,环境系统研究所)开发,是当今流行的组件式GIS开发软件。MapObject是一组地图软件的组件(ActiveX控件),利用它可以在普通的编程语言(如VB、VC、Delphi)上实现主要的地理信息系统(其中主要的就是电子地图的功能)的功能。MapObject简称MO。通过MapObjects你可灵活地建立适合用户的地图接口。在小内存空间中,你能用多种工业标准程序环境之一去建立应用程序,你能够联合使用MapObjects与其它软件去实现地图与用户信息的联系。2、MapObjects的功能 显示一张多图层地图(道路,河流,边界)。 放大,缩小,漫游。 生成、绘制图形元素,如点,线,圆,多边形。 绘制图形化文字。 可以用点击选择不同的对象(点、线、面)。 通过线,方框,区域,多边形,圆来拾取物体。 可以选择对象的指定位置。 通过SQL描述来选择物体。 对选取物体进行基本统计。 对所选地图元素的属性进行更新,查询。 绘制专题图。 用特殊方法渲染图层,如数值、类别、密度、图表、事件或Z值。 从航片或卫星图片上截取图像。 动态显示实时或系列时间组数据。 在图上标注地址或定位。 把数据投影到不同的坐标下。二、MO的基本操作1、图层加载进行电子地图系统显示、操作、处理和GIS开发之前,首先要有ArcInfo格式的GIS图层数据文件。这些文件可以从ArcInfo中产生,也可以从其他地理信息系统,如MapInfo、GeoMedia、MapGIS等系统中转换而来。在MO中可以使用的数据文件格式主要有Shapefile、Coverage、SDE、VFP和各种CAD文件。这里主要介绍针对Shapefile文件的电子地图开发。Shapefile文件采用早期的dBase数据库管理模式,一个文件夹是一个数据库,文件夹的不同文件就是数据库中的表,每个表代表GIS图中的一个图层。每个图层文件必须包括3个以上的特征文件,才能在MO中使用,它们分别是空间特征数据文件(即图形文件).shp、索引文件.shx和属性数据文件.dbf。图层又分为点状图层、线状图层和面状图层3类,图层加载的时候要使点状图层在最上面,线状图层在中间,面状图层在最下面,否则面状图层会把点状和线状图层都覆盖掉。要注意在MO中,最先加载的在下面,最后加载的在上面。2、添加Map控件3、手工加载图层:通过控件的属性添加图层文件4、程序加载图层:(1)利用dc.Database = 文件路径设置图层文件所在目录,其中,dc.Database = app.path为设置与程序存在的文件夹一样的目录例如:Option Explicit 在窗体模块中强制声明变量Private Sub Form_Load()Dim dc As New mapobjects2.DataConnection 创建了对象变量的同时创建实例Dim layer As MapLayer 创建了一个空的对象变量而未创建实例Set layer = New MapLayerdc.Database = F:MO实验程序加载If dc.Connect Thenlayer.GeoDataset = dc.FindGeoDataset(country)Map1.Layers.Add layerMap1.RefreshElseMsgBox 在指定文件夹下面没有找到相应图层数据文件!End IfEnd Sub几点说明l MapLayer对象表示地理坐标数据层,而这些地理坐标数据在Map控件中可以画出带GeoDataset的一类地理特征集。l GeoDataset是MapLayer对象的属性,是一个只写属性,用来设置图层相对应的空间数据和属性数据的数据库。l DataConnection对象表示数据库的连接,属性包括Database:设置和读取数据库的连接,如果数据为shape文件时,此值表示shape文件所在的目录路径和目录名,自动产生ODBC连接。l 在将对象的引用赋给变量、数据类型的元素或可写对象的属性时,须使用关键字“set”,在创建对象类的实例时,须使用关键字“new”。思考并作业(1):利用以前所学的VB中的驱动器列表框控件、目录列表框控件和文件列表框控件来加载地图文件。二、地图操作的基本功能1、地图放大:Map1.Extent2、地图移动:Map1.pan3、地图缩小:预先设置缩小倍数4、恢复原始大小:set map1.extent = map1.fullextent几点说明:l Extent属性这是表示当前图形显示范围的一个变量,可以修改和读取这个变量,这个变量的类型为矩形(Rectangle)类型。l Fullextent属性表示所有图层总的坐标范围,变量类型为矩形(Rectangle)类型,主要用于图形的全图显示。l MousePointer鼠标指针类型变量,可以设置和读取,表示当鼠标在Map控件上移动时鼠标显示的类型。如:Map1.MousePointer = moZoomIn。例如:Option ExplicitPrivate Sub Command1_Click()Dim r As MapObjects2.RectangleSet r = Map1.Extentr.ScaleRectangle 1.5Map1.Extent = rEnd SubPrivate Sub Command2_Click()Set Map1.Extent = Map1.FullExtentEnd SubPrivate Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = vbLeftButton ThenSet Map1.Extent = Map1.TrackRectangleElseIf Button = vbRightButton ThenMap1.PanEnd IfEnd Sub基本操作综合练习(之前添加并设置好工具栏控件)Option ExplicitDim r As MapObjects2.RectanglePrivate Sub Command1_Click() EndEnd SubPrivate Sub Command2_Click() Dim Bs As String Bs = 选择工具栏,可以实现放大、缩小、移动和还原的功能。 & vbCrLf & vbCrLf & 朱红春,2005/4/1 MsgBox Bs, , 地图浏览系统帮助End SubPrivate Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Toolbar1.Buttons(1).Value = 1 Then Set Map1.Extent = Map1.TrackRectangle ElseIf Toolbar1.Buttons(3).Value = 1 Then Map1.Pan ElseIf Toolbar1.Buttons(2).Value = 1 Then Set r = Map1.Extent r.ScaleRectangle 1.5 Map1.Extent = r ElseIf Toolbar1.Buttons(4).Value = 1 Then Map1.Extent = Map1.FullExtent End IfEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) If Toolbar1.Buttons(1).Value = 1 Then Map1.MousePointer = moZoomIn ElseIf Toolbar1.Buttons(3).Value = 1 Then Map1.MousePointer = moPan ElseIf Toolbar1.Buttons(2).Value = 1 Then Map1.MousePointer = moZoomOut ElseIf Toolbar1.Buttons(4).Value = 1 Then Set Map1.Extent = Map1.FullExtent Map1.MousePointer = moDefault End IfEnd Sub上机作业:1、练习地图控件的使用,参照上述图层加载和基本操作的代码,熟悉MO的基本操作。2、完成思考联系(1)End Sub几点说明l MapLayer对象表示地理坐标数据层,而这些地理坐标数据在Map控件中可以画出带GeoDataset的一类地理特征集。l GeoDataset是MapLayer对象的属性,是一个只写属性,用来设置图层相对应的空间数据和属性数据的数据库。l DataConnection对象表示数据库的连接,属性包括Database:设置和读取数据库的连接,如果数据为shape文件时,此值表示shape文件所在的目录路径和目录名,自动产生ODBC连接。l 在将对象的引用赋给变量、数据类型的元素或可写对象的属性时,须使用关键字“set”,在创建对象类的实例时,须使用关键字“new”。思考并作业(1):利用以前所学的VB中的驱动器列表框控件、目录列表框控件和文件列表框控件来加载地图文件。二、地图操作的基本功能1、地图放大:Map1.Extent2、地图移动:Map1.pan3、地图缩小:预先设置缩小倍数4、恢复原始大小:set map1.extent = map1.fullextent几点说明:l Extent属性这是表示当前图形显示范围的一个变量,可以修改和读取这个变量,这个变量的类型为矩形(Rectangle)类型。l Fullextent属性表示所有图层总的坐标范围,变量类型为矩形(Rectangle)类型,主要用于图形的全图显示。l MousePointer鼠标指针类型变量,可以设置和读取,表示当鼠标在Map控件上移动时鼠标显示的类型。如:Map1.MousePointer = moZoomIn。例如:Option ExplicitPrivate Sub Command1_Click()Dim r As MapObjects2.RectangleSet r = Map1.Extentr.ScaleRectangle 1.5Map1.Extent = rEnd SubPrivate Sub Command2_Click()Set Map1.Extent = Map1.FullExtentEnd SubPrivate Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = vbLeftButton ThenSet Map1.Extent = Map1.TrackRectangleElseIf Button = vbRightButton ThenMap1.PanEnd IfEnd Sub基本操作综合练习(之前添加并设置好工具栏控件)Option ExplicitDim r As MapObjects2.RectanglePrivate Sub Command1_Click()EndEnd SubPrivate Sub Command2_Click()Dim Bs As StringBs = 选择工具栏,可以实现放大、缩小、移动和还原的功能。 & vbCrLf & vbCrLf & 朱红春,2005/4/1MsgBox Bs, , 地图浏览系统帮助End SubPrivate Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Toolbar1.Buttons(1).Value = 1 Then Set Map1.Extent = Map1.TrackRectangleElseIf Toolbar1.Buttons(3).Value = 1 Then Map1.PanElseIf Toolbar1.Buttons(2).Value = 1 Then Set r = Map1.Extent r.ScaleRectangle 1.5 Map1.Extent = rElseIf Toolbar1.Buttons(4).Value = 1 ThenMap1.Extent = Map1.FullExtentEnd IfEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)If Toolbar1.Buttons(1).Value = 1 Then Map1.MousePointer = moZoomInElseIf Toolbar1.Buttons(3).Value = 1 Then Map1.MousePointer = moPanElseIf Toolbar1.Buttons(2).Value = 1 Then Map1.MousePointer = moZoomOutElseIf Toolbar1.Buttons(4).Value = 1 Then Set Map1.Extent = Map1.FullExtent Map1.MousePointer = moDefaultEnd IfEnd Sub第二讲 图层的基本功能开发一、图层的加载操作1、利用其他控件动态加载图层文件所用控件包括Map 控件,Drive、Dir、File列表控件,和一个命令按钮,实现可选择性的图层文件加载,基本代码如下:Option ExplicitDim dc As New DataConnectionDim layer As New MapLayerPrivate Sub Command1_Click()Map1.Layers.Cleardc.Database = File1.PathIf dc.Connect Thenlayer.GeoDataset = dc.FindGeoDataset(File1.FileName)Map1.Layers.Add layerMap1.RefreshElseMsgBox 在指定文件夹下面没有找到相应图层数据文件!End IfEnd SubPrivate Sub Drive1_Change()Dir1.Path = Drive1.DriveEnd SubPrivate Sub Dir1_Change()File1.Path = Dir1.PathEnd Sub2、同一文件夹下加载如果你的程序和GIS图层文件(.shp、.shx和.dbf)在同一个文件夹下,设置好图层文件夹的路径,进行自动加载。示例如下:Option ExplicitDim dc As New DataConnectionDim layer As MapLayerPrivate Sub Command1_Click()dc.Database = App.Pathdc.Database = 指定文件夹路径If dc.Connect ThenSet layer = New MapLayerlayer.GeoDataset = dc.FindGeoDataset(文件名1)Map1.Layers.Add layerSet layer = New MapLayerlayer.GeoDataset = dc.FindGeoDataset(文件名2)Map1.Layers.Add layerMap1.RefreshElseMsgBox 在指定文件夹下面没有找到相应图层数据文件!End IfEnd Sub试验在调试过程中替换代码“Dim layer As New MapLayer”,观察程序运行结果。3、在不同文件夹下加载由于在实际的应用程序中,图层文件和程序文件都很多,为了方便管理,一般程序文件和图层文件不在一个文件夹下,通常采用一个文件夹单独存放图层文件,而把各个程序文件和它并列放置。例如应用程序的文件夹路径为“F:MO实验”,程序在“F:MO实验程序加载”下,图层文件放在“F:MO实验WORLD”文件夹下,这时要用+”.”返回上级文件夹,示例代码为:Option ExplicitDim dc As New DataConnectionDim layer As New MapLayerPrivate Sub Command1_Click()dc.Database = App.Path + . + worlddc.Database = 指定文件夹路径If dc.Connect Thenlayer.GeoDataset = dc.FindGeoDataset(country)Map1.Layers.Add layerlayer.GeoDataset = dc.FindGeoDataset(cities)Map1.Layers.Add layerMap1.RefreshElseMsgBox 在指定文件夹下面没有找到相应图层数据文件!End IfEnd Sub4、图层的卸载和移动用语句:Map1. Layers.Remove 0可以把第0层卸载,注意:卸载了一个图层后,其他图层的序号就发生了变化。用语句:Map1. Layers. Clear可以一次卸载所有的图层。可以用MoveTo方法来把图层从位置1移动到位置2,如原来图层在第2层,用以下语句可以把它移动到第0层:Map1. Layers. MoveTo 2,0。5、图层的选择和隐藏用图层的索引号:Set Layer = Map1.Layers(0)或图层名称Set Layer = Map1.Layers(country)来选择当前层。用语句:layer.visible = false来隐藏当前层。另外,可以通过设置Map1.visible来隐藏或显示整个Map控件。综合示例代码如下:Option ExplicitDim dc As New DataConnectionDim layer As MapLayerPrivate Sub layerset() 图层设置模块dc.Database = F:MO实验WORLDIf dc.Connect ThenSet layer = New MapLayerSet layer.GeoDataset = dc.FindGeoDataset(country)Map1.Layers.Add layerSet layer = New MapLayerSet layer.GeoDataset = dc.FindGeoDataset(cities)Map1.Layers.Add layerElseMsgBox 在指定文件夹下没有找到相应的文件End IfEnd SubPrivate Sub Command1_Click()layersetMap1.RefreshEnd SubPrivate Sub Command2_Click()Map1.Layers.ClearEnd SubPrivate Sub Command3_Click()On Error GoTo err1Set layer = Map1.Layers(0)layer.Visible = FalseMap1.RefreshExit Suberr1:MsgBox 没有图层End SubPrivate Sub Command4_Click()On Error GoTo err1Set layer = Map1.Layers(0)layer.Visible = TrueMap1.RefreshExit Suberr1:MsgBox 没有图层End SubPrivate Sub Command5_Click()Map1.Visible = FalseEnd SubPrivate Sub Command6_Click()Map1.Visible = TrueEnd Sub二、图层的基本属性设置面状图层基本属性包括图层颜色、区域界线的宽度、区域界线样式、区域界线颜色等;线状图层的属性包括线宽度、线样式、线颜色等;点状图层属性包括点大小、点样式、点颜色等,另外还有属性的标注等。1、设置图层颜色调试前面的程序你会发现图层的颜色是随机出现的,通过设置Symbol对象的Color属性,可以很容易的设置固定的图层颜色。语法结构为:object.Color = color,具体为layer.Symbol.Color = moGreen,其中moGreen是MO的内设常数,也可以使用VB的颜色设置和RGB的颜色设置,具体方法为:layer.Symbol.Color RGB(255,255,113),layer.Symbol.Color=QBColor(12)。2、设置区域属性当图层为面状图层时,用layer.Symbol.Size 设置区域界线的宽度,= 1为较细的线型,2为较粗的线型。还可以用layer.Symbol.OutlineColor = moGreen来设置区域界线的颜色,用layer.Symbol.Style = 7设置填充方式。3、设置线属性当图层为线状图层时,用layer.Symbol.Size 设置线的宽度,layer.Symbol.Color设置线的颜色,用layer.Symbol.Style设置线的样式。4、设置点属性当图层为点状图层时,用layer.Symbol.Size 设置点的大小,一般用36,3是较小的点,6是较大的点。还可以用layer.Symbol.Color设置点的颜色,用layer.Symbol.Style设置点的样式。具体点线面的各个属性参数值见帮助文件。综合示例代码:Option ExplicitDim dc As New DataConnectionDim layer As MapLayerPrivate Sub Command1_Click()dc.Database = F:MO实验WORLDSet layer = New MapLayerlayer.GeoDataset = dc.FindGeoDataset(country)layer.Symbol.Color = QBColor(9)layer.Symbol.Size = 1layer.Symbol.OutlineColor = moGreenlayer.Symbol.Style = 7Map1.Layers.Add layerSet layer = New MapLayerlayer.GeoDataset = dc.FindGeoDataset(rivers)layer.Symbol.Color = moRedlayer.Symbol.Size = 2layer.Symbol.Style = 4Map1.Layers.Add layerSet layer = New MapLayerlayer.GeoDataset = dc.FindGeoDataset(cities)layer.Symbol.Color = moBlacklayer.Symbol.Size = 3layer.Symbol.Style = 2Map1.Layers.Add layerMap1.RefreshEnd Sub至此,我们已经学了和图层操作有关的几个对象和控件:Map控件,DataConnection对象,Layers集合对象,MapLayer对象,以及和设置地图图层属性的Symbol对象。DataConnection对象包括的属性和函数有Database属性,Connect和FindGeoDataset函数;MapLayer对象的GeoDataset属性;Layers集合对象包含所有对应控件上的向量图层(MapLayer)和栅格图像图层(Image Layer)对象,用到的成员函数有Add和Clear;Map控件的Extent属性,Fullextent属性,MousePointe鼠标指针变量,Refresh成员函数;Symbol对象的Color属性,OutlineColor属性,Size属性,Style属性。第三讲 图层标注、图层控制和电子地图常用工具开发一、图层标注利用MO的标注对象LabelRenderer,可以自动添加图层上对象的标注。1、属性标注属性标注的方法为:Set layer.Renderer = New LabelRenderer 设置标注对象layer.Renderer.Field = CNTRY_NAME 指定要显示的字段layer.Renderer.AllowDuplicates = True 允许标注重复标注语句要加在图层添加语句:Map1.Layers.Add layer的前面。几点说明:Renderer是MapLayer的属性之一,用于设置或读取图层的着色对象。着色对象有ClassBreaksRenderer对象,DotDensityRenderer对象,LabelRenderer对象和ValueMapRenderer对象。其中,LabelRenderer对象描述一种表示地理特征的方法,即在一个地理特征上写字符。显示在地理特征的字符值来自一个字段的值,Field属性表示该字段的名字。AllowDuplicates属性是一个布尔值,表示是否允许在标注处多次标注同样的字符,True为允许,false为不允许。2、设置图上字体以上的标注是按照缺省的方式来设置的字体,还可以利用标注对象的Symbol数组,来自己动手设置更合适的字体属性。layer.Renderer.Symbol(0).Font.Name = 隶书layer.Renderer.Symbol(0).Font.Bold = Falselayer.Renderer.Symbol(0).Color = moRedlayer.Renderer.Symbol(0).Font.Size = 20以上设置的字体是固定大小,不随着图形大小的改变而改变。layer.Renderer.Symbol(0).Height = 10这时Height设置有优先设置权,Font.Bold和Font.Size将不起作用。二、图层控制1、利用check控件控制图层的显示和文字标注用程序添加图层时,系统会自动设置图层对象的序号,最后添加的为图层0,其上为图层1,依次类推。Option ExplicitDim dc As New DataConnectionDim layer As MapLayerPrivate Sub Check3_Click() Set layer = Map1.Layers(2) If Check3.Value = 0 Then layer.Visible = False Else layer.Visible = True End If Map1.RefreshEnd SubPrivate Sub Check2_Click() Set layer = Map1.Layers(1) If Check2.Value = 0 Then layer.Visible = False Else layer.Visible = True End If Map1.RefreshEnd SubPrivate Sub Check1_Click() Set layer = Map1.Layers(0) If Check1.Value = 0 Then layer.Visible = False Else layer.Visible = True End If Map1.RefreshEnd SubPrivate Sub Check4_Click() Set layer = Map1.Layers(0) Set layer.Renderer = New LabelRenderer If Check4.Value = 0 Then layer.Renderer.AllowDuplicates = False Else Call Layer0Render(layer) End If Map1.RefreshEnd SubPrivate Sub Layer0Render(layer1 As MapLayer) 重复设置LabelRenderer对象的过程 Set layer1.Renderer = New LabelRenderer layer1.Renderer.Field = NAME 指定要显示的字段 layer1.Renderer.Symbol(0).Font.Name = Times New Roman layer1.Renderer.Symbol(0).Font.Bold = False 缺省为True layer1.Renderer.Symbol(0).Color = moBlack layer1.Renderer.Symbol(0).Font.Size = 8 layer1.Renderer.AllowDuplicates = TrueEnd SubPrivate Sub LayerSet() Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(states) layer.Symbol.Color = moYellow layer.Symbol.Size = 1 layer.Symbol.Style = 2 layer.Symbol.OutlineColor = moBrown Map1.Layers.Add layer Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(roads) layer.Symbol.Color = moDarkGreen layer.Symbol.Size = 2 Map1.Layers.Add layer Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(Cities) layer.Symbol.Color = moRed layer.Symbol.Size = 4 layer.Symbol.Style = 0 Call Layer0Render(layer) Map1.Layers.Add layerEnd SubPrivate Sub Form_Load() dc.Database = F:MO实验USA If Not dc.Connect Then MsgBox 在指定的文件夹下没找到图层数据文件! End End If LayerSet Map1.RefreshEnd Sub几点说明:Layers对象的属性只有一个,即count。这个值表示Layers集合当前具有多少个图层,如果这个值为-1,说明图层不确定。Call 语句,将控制权转移到一个 Sub 过程,Function 过程。如:Call Layer0Render(layer),调用Layer0Render(layer)过程。2、使用Legend控件使用Legend组件,可以调用图层控制功能。添加Legend控件后,在Form_Load过程中写入:legend1.setMapSource Map1;legend1.LoadLegend True,再添加AfterSetLayerVisible过程,Map1.Refresh,可以在取消和添加图层后刷新。运行程序后,可以看见Legend控件不仅可以自动标上图层名称,而且可以上下拖动,改变加载的顺序。加上legend1.EnableDragDrop = False可以取消图层拖动的功能,还可以在Legend控件的属性框中设置字体,backcolor、forecolor等。另外在Legend上不能控制图层的标注,但可以多加载一个显示标注的图层的迂回方法,就可以实现控制图层标注的目的。示例代码如下:Option ExplicitDim dc As New DataConnectionDim layer As MapLayerPrivate Sub legend1_AfterSetLayerVisible(index As Integer, isVisible As Boolean) Map1.RefreshEnd SubPrivate Sub LayerSet() Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(区县) layer.Symbol.Color = moOrange layer.Symbol.Size = 1 layer.Symbol.Style = 9 layer.Symbol.OutlineColor = moBrown layer.Name = 行政区 Map1.Layers.Add layer Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(河流1) layer.Symbol.Color = moDarkGreen layer.Symbol.Size = 2 layer.Name = 河流 Map1.Layers.Add layer Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(测站) layer.Symbol.Color = moRed layer.Symbol.Size = 3 layer.Symbol.Style = 0 layer.Name = 测站 Set layer.Renderer = New LabelRenderer layer.Renderer.Field = NAME 指定要显示的字段 layer.Renderer.Symbol(0).Font.Name = 幼圆 layer.Renderer.Symbol(0).Font.Bold = False 缺省为True layer.Renderer.Symbol(0).Color = moBlack layer.Renderer.Symbol(0).Font.Size = 8 layer.Renderer.AllowDuplicates = True Map1.Layers.Add layerEnd SubPrivate Sub Form_Load() dc.Database = App.Path + . + beijing If Not dc.Connect Then MsgBox 在指定的文件夹下没找到图层数据文件! End End If LayerSet legend1.setMapSource Map1 legend1.LoadLegend True Map1.RefreshEnd Sub三、电子地图常用工具开发电子地图常用工具开发和方法包括指示图(locator map)、比例尺(scalebar)和状态栏(statusbar)、打印功能的设置、鼠标提示(tip text)的设置以及查看属性设置等。1、使用指示图(即鹰眼功能)之添加指示窗口一般电子地图系统在主窗口的附近有一个指示图,指示图用显著颜色的方框显示目前主窗口在全图的位置,并可以拖动方框或其他方式,在全图中迅速定位。示例代码如下:Option ExplicitDim dc As New DataConnectionDim layer As MapLayerPrivate Sub Form_Load() dc.Database = App.Path + . + world Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(country) layer.Symbol.Color = moYellow layer.Symbol.Size = 1 layer.Symbol.Style = 2 layer.Symbol.OutlineColor = moBrown Map1.Layers.Add layer Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(Cities) layer.Symbol.Color = moRed layer.Symbol.Size = 4 layer.Symbol.Style = 0 Map1.Layers.Add layer Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(country) layer.Symbol.Color = moPaleYellow Map2.Layers.Add layer Map2.RefreshEnd Sub使Map1和Map2联动,利用AfterLayerDraw事件函数来实现,此方法表示当Map1画完开始执行的事件代码。Private Sub Map1_AfterLayerDraw(ByVal index As Integer, ByVal canceled As Boolean, ByVal hDC As stdole.OLE_HANDLE)If index = 1 Then 代表加载的图层索引号Map2.TrackingLayer.Refresh True TrackingLayer对象是Map控件中的一个特殊层,它描绘位置可以动态改变的地理目标。Refresh是其的一个函数,用来强制刷新新的TrackingLayer对象,此值是一个布尔值。End IfEnd SubPrivate Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = vbLeftButton ThenSet Map1.Extent = Map1.TrackRectangleElseIf Button = vbRightButton

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论