基于vb的mapx比例尺vb复制代码怎么写写

基于MapX和VB6.0的电子地图查询系统
Electronic Map Inquiry System Based on the MapX and VB6.0
随着数字化时代的到来,电子地图作为城市数字化的一个重要部分被广泛的应用,文中论述了利用VB在MapX基础上制作电子地图查询系统的方法,系统的主要功能和特点.
河北承德市城市地理信息数据中心,承德,067000
辽宁工程技术大学,阜新,123000
河北秦皇岛市测绘大队,秦皇岛,066000
年,卷(期)
机标分类号
本文读者也读过
加载中,请稍候
.客服电话
&&8:00-11:30,13:00-17:00(工作日)用vb+mapx如何实现直线分割
用VB+MAPX编程实现对一条直线分割
10-01-28 &
实验数据的直线拟合程序(VB6.0代码编写)
请登录后再发表评论!基于VB和MapX的GPS移动测图系统--《测绘技术装备》2005年04期
基于VB和MapX的GPS移动测图系统
【摘要】:本文以基于MapX的GPS移动测图设计为例,从GPS串口通信的协议、设备、线路连接、信号的接收、处理、自动测图以及程序设计等各个方面介绍了GPS测图系统的工作原理和方式。与以往的相关研究不同的是,本文的研究重点在于GPS与PC的串口通信设计。
【作者单位】:
【关键词】:
【分类号】:P228.4【正文快照】:
1引言GPS在车辆调度、远程控制、灾害管理、信息预测中起着至关重要作用,利用GPS接收卫星信号,通过九针串口将信号传输到计算机,利用VB开发工具,基于GIS组件MapX对定位信号处理、保存并加入电子地图数据库,同时以图形可视化方式表现于计算机屏幕,是本文实现的主要内容。2GPS
欢迎:、、)
支持CAJ、PDF文件格式,仅支持PDF格式
【共引文献】
中国期刊全文数据库
李宏男,伊廷华,王国新;[J];自然灾害学报;2004年06期
尹献德,孟凡玉,王复明,乐金朝,牟乃夏;[J];郑州工业大学学报;2000年02期
胡宏昌;[J];高等数学研究;2003年03期
归庆明,郭建锋;[J];信息工程大学学报;2004年02期
王晓栋,崔伟宏;[J];遥感学报;1999年04期
胡宏昌,孙海燕;[J];应用数学;2002年S1期
黄文彬,高连义;[J];影像技术;2000年04期
康红星;[J];工程设计与建设;2004年01期
刘云,万德钧,王庆,田华明;[J];中国惯性技术学报;2002年01期
李延兴!中国天津,300180,胡新康!中国天津,300180,帅平!中国天津,300180,郭良迁!中国天津,300180;[J];中国地震;2000年02期
中国重要会议论文全文数据库
董曼;李胜乐;;[A];新世纪观测技术发展及防震减灾青年学术研讨会论文集[C];2007年
嵇永泉;胡智仁;;[A];现代空间定位技术应用研讨交流会论文集(第5卷 第3集)[C];2007年
郑汉球;于晖;;[A];现代空间定位技术应用研讨交流会论文集(第5卷 第3集)[C];2007年
荆炜;;[A];现代空间定位技术应用研讨交流会论文集(第5卷 第3集)[C];2007年
张国辉;鲍勇;;[A];中国仪器仪表学会第九届青年学术会议论文集[C];2007年
李德仁;;[A];中国测绘学会2006年学术年会论文集[C];2006年
张长国;;[A];山东省测绘学术年会论文集[C];2006年
魏波;张爱武;李佑钢;冀翼;王瑶;;[A];第二届立体图象技术及其应用(国际)研讨会论文集[C];2007年
曲伟菁;平劲松;史弦;鄢建国;朱文耀;宋淑丽;;[A];中国空间科学学会空间探测专业委员会第十九次学术会议论文集(下册)[C];2006年
赵鹏;何风勇;周夏青;;[A];新技术在土地调查中的应用与土地科学技术发展-2005年中国土地学会学术年会论文集[C];2005年
中国博士学位论文全文数据库
王永泉;[D];上海交通大学;2008年
张勇虎;[D];国防科学技术大学;2006年
罗小军;[D];西南交通大学;2007年
戴吾蛟;[D];中南大学;2007年
杨力;[D];解放军信息工程大学;2001年
张贵明;[D];电子科技大学;2001年
张可;[D];北京工业大学;2001年
范胜林;[D];南京航空航天大学;2001年
李崇贵;[D];中国林业科学研究院;2001年
何海波;[D];中国人民解放军信息工程大学;2002年
中国硕士学位论文全文数据库
孟键;[D];解放军信息工程大学;2007年
刘栩之;[D];上海交通大学;2008年
张锋;[D];解放军信息工程大学;2007年
刘若普;[D];上海交通大学;2008年
叶修松;[D];解放军信息工程大学;2007年
罗立平;[D];大连理工大学;2007年
汤仁锋;[D];太原理工大学;2007年
张化疑;[D];山东科技大学;2007年
罗力;[D];江西理工大学;2007年
张照杰;[D];山东科技大学;2007年
【相似文献】
中国期刊全文数据库
林春,王波,贺贵明;[J];计算机工程;2002年05期
张勇,杨作升,刘展,周晓霞;[J];青岛海洋大学学报(自然科学版);2003年01期
;[J];测绘信息与工程;2003年05期
葛瑛芳;[J];浙江水利科技;2003年01期
岳新利,张永进,孙毅;[J];现代电子技术;2003年08期
林文鹏,王长耀,王臣立;[J];地理空间信息;2004年03期
黄丙湖,闾国年,王耀庭;[J];地理与地理信息科学;2004年04期
罗美雪;[J];福建地理;2004年03期
郑军,陈正阳;[J];矿山测量;2004年03期
牛志一,龚晓峰,邸晓伟,牟锐;[J];西南民族大学学报(自然科学版);2004年04期
中国重要会议论文全文数据库
徐忠国;葛吉琦;;[A];地理空间信息技术与数字江苏论坛文集[C];2001年
曹杰峰;翁敬农;;[A];中国地理信息系统协会第三次代表大会暨第七届年会论文集[C];2003年
崔敬;;[A];中国地理信息系统协会第三次代表大会暨第七届年会论文集[C];2003年
李海涛;方朝阳;陈戈;;[A];第十四届全国遥感技术学术交流会论文摘要集[C];2003年
许彤丽;;[A];全面建设小康社会:中国科技工作者的历史责任——中国科协2003年学术年会论文集(上)[C];2003年
孙范荣;钟玲;魏东;黄有群;;[A];全国第13届计算机辅助设计与图形学(CAD/CG)学术会议论文集[C];2004年
杨阳;郭建忠;;[A];中国地理信息系统协会第八届年会论文集[C];2004年
刘红军;;[A];中国地理信息系统协会第八届年会论文集[C];2004年
王翠;贺传阅;刘松林;黄群;牛德力;;[A];中国地理信息系统协会第八届年会论文集[C];2004年
黄丙湖;闾国年;刘二年;张强;丰江凡;;[A];中国地理信息系统协会第八届年会论文集[C];2004年
中国重要报纸全文数据库
;[N];中国计算机报;2002年
;[N];计算机世界;2002年
;[N];计算机世界;2002年
;[N];计算机世界;2002年
;[N];计算机世界;2002年
闫静;[N];计算机世界;2002年
李玮;[N];中国计算机报;2003年
闫静;[N];中国计算机报;2003年
;[N];中国计算机报;2004年
本报记者 小白;[N];计算机世界;2004年
中国博士学位论文全文数据库
沈文君;[D];中国农业大学;2004年
中国硕士学位论文全文数据库
徐忠国;[D];南京农业大学;2003年
吕炜;[D];华北电力大学(北京);2003年
江俊敏;[D];浙江工业大学;2004年
李民;[D];南京理工大学;2004年
杨雷;[D];哈尔滨工程大学;2004年
张晓宇;[D];辽宁工程技术大学;2005年
窦世卿;[D];辽宁工程技术大学;2005年
李果;[D];大连理工大学;2005年
高允京;[D];西南交通大学;2004年
吴银龙;[D];长安大学;2005年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 大众知识服务
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号您的访问出错了(404错误)
很抱歉,您要访问的页面不存在。
1、请检查您输入的地址是否正确。
进行查找。
3、感谢您使用本站,1秒后自动跳转阅读:18441回复:51
[VB+MAPX]功能开发的实现代码共享(只允许贴码跟贴)
发布于: 11:07
我先来一段。。。
Private Sub Map1_MapViewChanged() &主要实现比例尺和视野
&Dim ZoomValue As Double
&Dim CoordUnit As Integer
&Dim areunit As Integer
&Dim UnitStr As String
&Dim areunit1 As Integer
&Dim coordunit1 As Integer
&Dim i As Integer
&Dim bilichi As Double
&ZoomValue = GISmain.Map1.zoom
&CoordUnit = GISmain.Map1.MapUnit
&areunit = GISmain.Map1.AreaUnit
&
&
&Map1.MapUnit = 6
&bilichi = (Map1.zoom * 567) / Map1.Width
&Map1.MapUnit = CoordUnit
&
&
&Select Case CoordUnit &以下为单位,粘的时候乱码了。。。
&& &Case 0
&& & &UnitStr = &英里&
&& & &coordunit1 = 0
&& &Case 1
&& & &UnitStr = &¹&&A&&
&& & &coordunit1 = 1
&& &Case 2
&& & &UnitStr = &&O&&&&
&& & &coordunit1 = 2
&& &Case 3
&& & &UnitStr = &&O&³&&
&& & &coordunit1 = 3
&& &Case 4
&& & &UnitStr = &&A&&
&& & &coordunit1 = 4
&& &Case 5
&& & &UnitStr = &&&A&A×&
&& & &coordunit1 = 5
&& &Case 6
&& & &UnitStr = &&A&&A×&
&& & &coordunit1 = 6
&& &Case 7
&& & &UnitStr = &&A×&
&& & &coordunit1 = 7
&& &Case 9
&& & &UnitStr = &&&&A&&
&& & &coordunit1 = 8
&& &Case 13
&& & &UnitStr = &&&E&
&& & &coordunit1 = 9
&End Select
&Select Case areunit
&& &Case 14
&& & &areunit1 = 0
&& &Case 15
&& & &areunit1 = 1
&& &Case 16
&& & &areunit1 = 2
&& &Case 17
&& & &areunit1 = 3
&& &Case 18
&& & &areunit1 = 4
&& &Case 19
&& & &areunit1 = 5
&& &Case 20
&& & &areunit1 = 6
&& &Case 21
&& & &areunit1 = 7
&& &Case 29
&& & &areunit1 = 8
&End Select
&& &Combo1.Clear
&& &Combo2.Clear
&& &Combo3.ListIndex = coordunit1
&& &Combo4.ListIndex = areunit1
&& &For i = 1 To GISmain.Map1.Layers.Count
&& & &Combo1.AddItem GISmain.Map1.Layers.Item(i).Name
&& &Next i
&& &For i = 1 To GISmain.Map1.DataSets.Count
&& & &Combo2.AddItem GISmain.Map1.DataSets.Item(i).Name
&& &Next i
&& &If Combo1.ListCount & 0 Then Combo1.ListIndex = 0
&& &If Combo2.ListCount & 0 Then Combo2.ListIndex = 0
&&StatusBar1.Panels.Item(2).Text = &视野& + Format(str(ZoomValue), &#,##0.000000&) + & & + UnitStr
&&StatusBar1.Panels.Item(3).Text = 比例尺& + &1:& + Format(str(bilichi), &#,##0.00&)
&& Map2.Refresh
End Sub
[此贴子已经被作者于 8:07:43编辑过]
发布于: 11:13
Sub MapX_Ruler(ByRef p As MapXLib.points, rMode As Integer) &主要实现标尺功能
&& &Dim aLen As Double
&& &Dim i As Integer
&& &
&& &Dim CoordUnit As Integer
&& &Dim UnitStr As String
&& &CoordUnit = GISmain.Map1.MapUnit
&& &Select Case CoordUnit
&& & &Case 0
&& & & &UnitStr = &&O&&A&&
&& & &Case 1
&& & & &UnitStr = &¹&&A&&
&& & &Case 2
&& & & &UnitStr = &&O&&&&
&& & &Case 3
&& & & &UnitStr = &&O&³&&
&& & &Case 4
&& & & &UnitStr = &&A&&
&& & &Case 5
&& & & &UnitStr = &&&A&A×&
&& & &Case 6
&& & & &UnitStr = &&A&&A×&
&& & &Case 7
&& & & &UnitStr = &&A×&
&& & &Case 9
&& & & &UnitStr = &&&&A&&
&& & &Case 13
&& & & &UnitStr = &&&E&
&& &End Select
&&
&& &If rMode = 2 Then
&& & & &'For i = p.Count - 2 To p.Count - 1
&& & & &If p.Count &= 2 Then
&& & & & & &i = p.Count - 1
&& & & & & &aLen = aLen + Map1.Distance(p.Item(i).x, p.Item(i).y, p.Item(i + 1).x, p.Item(i + 1).y)
&& & & &End If
&& & & &'Next i
&& &ElseIf rMode = 1 Then
&& & & &For i = 1 To p.Count - 1
&& & & & & &aLen = aLen + Map1.Distance(p.Item(i).x, p.Item(i).y, p.Item(i + 1).x, p.Item(i + 1).y)
&& & & &Next i
&& &End If
&& &
&& &If rMode = 1 Then
&& & & &GISmain.Text2.Text = Format$(aLen, &##.####&) + UnitStr
&& & & &'StatusBar1.Panels(3).Text = &总距离& + Format$(aLen, &##.####&) + UnitStr
&& & &
&& &ElseIf rMode = 2 Then
&& & & &GISmain.Text1.Text = Format$(aLen, &##.####&) + UnitStr
&& & & &GISmain.Text2.Text = & &
&& & & &'StatusBar1.Panels(4).Text = &距离& + Format$(aLen, &##.####&) + UnitStr
&& & & &'StatusBar1.Panels(3).Text = &&
&& &End If
End Sub
同时在下面自定义工具
Private Sub Map1_PolyToolUsed(ByVal ToolNum As Integer, ByVal Flags As Long, ByVal points As Object, ByVal bShift As Boolean, ByVal bCtrl As Boolean, EnableDefault As Boolean)
&& &Dim f As New Feature
&& &Dim mcount
&& &Dim pl
&& &Dim rg As New Feature
&& &Dim QueryLayer As String
&& &Dim ftraddpt As Feature
&& &Dim lyrtemp As Layer
&& &Dim reg_unit
&& &Dim reg_area
&& & &
&&
&& &Select Case ToolNum
&& & & &Case 107 &‘标尺
&& & & & & &
&& & & & & & & Select Case Flags
&& & & & & & & &Case miPolyToolBegin
&& & & & & & & &Case miPolyToolEnd
&& & & & & & & & & &f.Attach Map1
&& & & & & & & & & &f.Type = miFeatureTypeLine
&& & & & & & & & & &f.Style.LineStyle = 1
&& & & & & & & & & &f.Style.LineColor = 255
&& & & & & & & & & &f.Style.LineWidth = 1
&& & & & & & & & & &Call MapX_Ruler(points, 1)
&& & & & & & & & & &
&& & & & & & & &Case miPolyToolEndEscaped
&& & & & & & & &Case miPolyToolInProgress
&& & & & & & & & & &Call MapX_Ruler(points, 2)
&& & & & & & & &
&& & & & & & & &End Select
发布于: 14:33
如何在MapX下读取属性值。
有三种方法:
1. 由Layer对象的KeyField属性来设立要读取属性值的字段名。
接着,由Feature对象的keyValue读取此行的属性值。
2. 将图层加入到Datasets, &由Dataset对象的Value(x,y)属性,通过设置行号,列号来获得属性值。
3. 将图层加入到Datasets,之后由RowValues(ftr)获取整行的值。
&& & & &Dim ds As MapXLib.Dataset, lyr As MapXLib.layer
&& & & &Dim ftrs As Features
Dim ftr As Feature
Dim rv As RowValue
Dim rvs As RowValues
Dim DsName As String & ‘数据集名
Dim DsRows As Long, DsCols As Long
Dim i As Long, j As Long
&& &Set ds = Formmain.Map1.Datasets.Item(DsName)
&& &Set lyr = ds.layer
&& &Set ftrs = lyr.AllFeatures
&& &DsCols = ds.Fields.Count
&& &DsCols = DsCols + 1
&& &DsRows = ftrs.Count
&& &Grid1.Rows = DsRows + 1
&& &Grid1.Cols = DsCols
&& &Grid1.Row = 0
&& &For i = 0 To DsCols - 1
&& & &Grid1.Col = i
&& & &Grid1.Text = ds.Fields.Item(i + 1).Name
&& &Next i
&& &Grid1.Col = DsCols - 1
&& &Grid1.Text = &Fkey&
&& &lyr.BeginAccess miAccessRead
&& &For Each ftr In ftrs
&& & & &Set rvs = ds.RowValues(ftr)
&& & & &j = 0
&& & & &For Each rv In rvs
&& & & & &If Not IsNull(rv.Value) Then Grid1.TextArray(i * DsCols + j) = Trim(rv.Value)
&& & & & &j = j + 1
&& & & &Next
&& & & &Grid1.TextArray(i * DsCols + j) = ftr.FeatureKey
&& & & &i = i + 1
&& &lyr.EndAccess miAccessEnd & &
&& &Set ftr = Nothing
&& &Set ftrs = Nothing
&& &Set ds = Nothing
&& &Set rv = Nothing
&& &Set rvs = Nothing
&& &Set lyr = Nothing
注意:BeginAccess,以及EndAccess可以明显的提高属性读取的速度。
发布于: 14:34
自定义范围专题图
Dim ds As New MapXLib.Dataset
Dim thm As New MapXLib.Theme
Set ds = Formmain.Map1.bo2.Text)
Set thm = ds.Themes.add(0, &aa&, &aa&, False)
pact = False
thm.AutoRecompute = False
&#puteTheme = False
thm.DataMax = 700
thm.DataMin = 100
thm.ThemeProperties.AllowEmptyRanges = True
thm.ThemeProperties.NumRanges = 7
thm.ThemeProperties.DistMethod = miCustomRanges
thm.ThemeProperties.RangeCategories(1).Max = 150
thm.ThemeProperties.RangeCategories(1).Min = 50
thm.ThemeProperties.RangeCategories(2).Max = 250
thm.ThemeProperties.RangeCategories(2).Min = 150
thm.ThemeProperties.RangeCategories(3).Max = 350
thm.ThemeProperties.RangeCategories(3).Min = 250
thm.ThemeProperties.RangeCategories(4).Max = 450
thm.ThemeProperties.RangeCategories(4).Min = 350
thm.ThemeProperties.RangeCategories(5).Max = 550
thm.ThemeProperties.RangeCategories(5).Min = 450
thm.ThemeProperties.RangeCategories(6).Max = 650
thm.ThemeProperties.RangeCategories(6).Min = 550
thm.ThemeProperties.RangeCategories(7).Max = 750
thm.ThemeProperties.RangeCategories(7).Min = 650
&#puteTheme = True
thm.AutoRecompute = True
thm.Visible = True
发布于: 14:34
如何实现测距
a.//创建测距工具
&& & global const calculatedistance=1
&& & Private Sub Form_Load()
&& & & map1.CreateCustomTool(calcilatedistance,miToolTypepoly ,microsscursor)
&& & End Sub
&& & Private Sub Distances_Click()
&& & & map1.currenttool=calculatetool
&& & End Sub
在mapx的PolyToolUsed事件中,
&& 用Distance( x1,y1,x2,y2 )计算距离,由状态条中或label显示。
Private Sub Map1_PolyToolUsed(ByVal ToolNum As Integer, ByVal Flags As Long, ByVal points As Object, ByVal bShift As Boolean, ByVal bCtrl As Boolean, EnableDefault As Boolean)
&& &Dim DisSum As Double
&& &Dim Dis As Double
&& &Dim n As Integer
&& &Dim pts As New MapXLib.points
&& &Dim x1 As Double, y1 As Double, x2 As Double, y2 As Double
&& Set pts = points
&& &DisSum = 0
&& &MDIForm1.StatusBar1.Panels.Item(3).Text= Format(Str(DisSum), &#,##0.000000&
&& &Select Case Flags
&& & & &Case miPolyToolBegin
&& & & &Case miPolyToolInProgress
&& & & & &If ToolNum = CalculateDistance Then
&& & & & & & & For i = 1 To pts.Count - 1
&& & & & & & & & x1 = pts.Item(i).X
&& & & & & & & & y1 = pts.Item(i).Y
&& & & & & & & & x2 = pts.Item(i + 1).X
&& & & & & & & & y3 = pts.Item(i + 1).Y
&& & & & & & & & Dis = Map1.Distance(x1, y1, x2, y2)
&& & & & & & & & DisSum = DisSum + Dis
&& & & & & & & & MDIForm1.StatusBar1.Panels.Item(3).Text = Format(Str(DisSum), &#,##0.000000&
&& & & & & & & Next i
&& & & & & & End If
&& & & &Case miPolyToolEnd
End Select
发布于: 14:35
SymbolFont.Name与SymbolCharacter
二者皆用来定义Trutype字符集,但最好使用SymbolFont.Name。
Private Sub Command1_Click()
Dim pt As New Point ' Point object passed to the CreateSymbol method of the FFeatureFactory
Dim sty As New Style ' Style object passed to the CreateSymbol method, determines what symboltype/style...etc.
x1 = Map1.CenterX
y1 = Map1.CenterY
pt.Set x1, y1 ' Set the point for where the user clicked...
sty.SymbolFont.Name = &MapInfo Arrows&
sty.SymbolFont.Size = 48 ' set the size of the symbol to be 48...
sty.SymbolFontColor = 255 ' set color of the symbol to be red...
sty.SymbolFontHalo = True ' turn Halo effect on...
sty.SymbolFontBackColor = miColorBlue ' change the Halo color to blue
Set ftr = lyr.AddFeature(FF.CreateSymbol(pt, sty))
另一种用来选择字符集的方法:sty.PickSymbol
发布于: 14:37
用miDataSetGlobalHandle来实现数据的绑定
CMapXBindLayer bL
CMapXF
bLayer.CreateDispatch(bLayer.GetClsid());
flds.CreateDispatch(flds.GetClsid());
//Our source data in the correct tab-delimited form.
//In practice, this could come from a text file or some
//other source.
const char* tabifiedData =
&\&Cust1\&\t\&Loc1\&\t-72.40\t42.22\r\n&
&\&Cust2\&\t\&Loc2\&\t-75.40\t40.48\r\n&
&\&Cust3\&\t\&Loc3\&\t-76.40\t38.02\r\n&;
bLayer.SetLayerName(&Customer&);
bLayer.SetRefColumn1(3);
bLayer.SetRefColumn2(4);
bLayer.SetLayerType(miBindLayerTypeXY);
flds.Add(1, &Customer&);
flds.Add(2, &Location&);
flds.Add(3, &X&);
flds.Add(4, &Y&);
//The global handle which will contain the actual data.
HGLOBAL hGlobalData=NULL;
//This temporarily points to the location of the locked
//handle's data
char* pHandleData=NULL;
COleVariant SourceD
//Allocate space for the handle's data and copy the source
//data into it
hGlobalData = GlobalAlloc(GMEM_MOVEABLE, strlen(tabifiedData)+1);
pHandleData = (char*)GlobalLock(hGlobalData);
strcpy(pHandleData, tabifiedData);
GlobalUnlock(hGlobalData);
pHandleData = NULL;
//Point the SourceData variant at the global handle
SourceData.vt = VT_I4;
SourceData.lVal = (long)hGlobalD
try {
//Now add the Dataset to the Datasets collection
COleVariant bindVt, fldsVt;
COptionalVariant optVt;
fldsVt.vt = VT_DISPATCH;
fldsVt.pdispVal = flds.m_lpD
bindVt.vt = VT_DISPATCH;
bindVt.pdispVal = bLayer.m_lpD
CMapXDataset ds = m_ctrlMapX.GetDatasets().Add(miDataSetGlobalHandle, SourceData, COleVariant(&My Dataset&), COleVariant(1l), optVt, bindVt, fldsVt, optVt);
//Create a simple Theme from the data
ds.GetThemes().Add(COptionalVariant(), COptionalVariant(), COptionalVariant());
}
catch (COleDispatchException *e) {
e-&ReportError();
e-&Delete();
}
catch (COleException *e) {
e-&ReportError();
e-&Delete();
}
发布于: 14:38
新建一工程,放两个MapX控件:Map1(主),Map2(导航),放三个按钮用来放大、缩小和漫游:CmdZoomIn,CmdZoomOut,CmdPan
'本程序演示MapX的“鹰眼”窗口
'采用MapX的Feature方式实现
Dim m_TempLayer As Layer '导航图上临时图层
Dim m_Fea As MapXLib.Feature '导航图上反映主地图窗口位置的Feature
Dim bDown As Boolean '鼠标在导航图上按下的标志
Private Sub CmdPan_Click()
Map1.CurrentTool = miPanTool
End Sub
Private Sub CmdZoomIn_Click()
Map1.CurrentTool = miZoomInTool
End Sub
Private Sub CmdZoomOut_Click()
Map1.CurrentTool = miZoomOutTool
End Sub
Private Sub Form_Load()
''给Map2增加临时图层
Set m_TempLayer = Map2.Layers.CreateLayer(&wewew&
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set m_Fea = Nothing
Set m_TempLayer = Nothing
End Sub
''根据map1的Bounds在Map2上绘制矩形
Private Sub Map1_MapViewChanged()
Dim tempFea As MapXLib.Feature
Dim tempPnts As MapXLib.Points
Dim tempStyle As MapXLib.Style
If m_TempLayer.AllFeatures.Count = 0 Then '矩形边框还没有
'设置矩形边框样式
Set tempStyle = New MapXLib.Style
tempStyle.RegionPattern = miPatternNoFill
tempStyle.RegionBorderColor = 255
tempStyle.RegionBorderWidth = 2
'在临时图层添加大小为Map1的边界的Rectangle对象
Set tempFea = Map2.FeatureFactory.CreateRegion(Map1.Bounds, tempStyle)
Set m_Fea = m_TempLayer.AddFeature(tempFea)
Set tempStyle = Nothing
Else '根据Map1的视野变化改变矩形边框的大小和位置
With m_Fea.Parts.Item(1)
.RemoveAll
.AddXY Map1.Bounds.XMin, Map1.Bounds.YMin
.AddXY Map1.Bounds.XMax, Map1.Bounds.YMin
.AddXY Map1.Bounds.XMax, Map1.Bounds.YMax
.AddXY Map1.Bounds.XMin, Map1.Bounds.YMax
End With
m_Fea.Update
End If
End Sub
'下面代码和&API方式实现&的一样
Private Sub Map2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim MapX As Double
Dim MapY As Double
bDown = True
Map2.ConvertCoord X, Y, MapX, MapY, miScreenToMap
Map1.CenterX = MapX
Map1.CenterY = MapY
Private Sub Map2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim MapX As Double
Dim MapY As Double
If bDown Then
Map2.ConvertCoord X, Y, MapX, MapY, miScreenToMap
Map1.CenterX = MapX
Map1.CenterY = MapY
End If
End Sub
Private Sub Map2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
bDown = False
End Sub
发布于: 14:39
MapX4.5实现表紧缩
CMapXLayer layer = m_ctrlMapX.GetLayers().Item(m_ctrlMapX.GetLayers().GetCount());
VARIANT vtL
vtLayer.vt = VT_DISPATCH;
vtLayer.pdispVal = layer.m_lpD
CMapXDataset dataSet = m_ctrlMapX.GetDatasets().Add(miDataSetLayer, vtLayer,&pack&);
CString dsname = m_ctrlMapX.GetDatasets().Item(1).GetName();
CString layername = layer.GetName();
CString layerFilespec = layer.GetFilespec();
//将layer上的内容复制到临时表中
CMapXLayerInfo m_LayerI
m_LayerInfo.CreateDispatch(m_LayerInfo.GetClsid());
m_LayerInfo.SetType(6); //临时表(miLayerInfoTypeTemp)
VARIANT vtparam1;
vtparam1.vt = VT_BSTR;
vtparam1.bstrVal = CString(&MemTable&).AllocSysString();
m_LayerInfo.AddParameter(&TableStorageType&, vtparam1);
VARIANT vtparam2;
vtparam2.vt = VT_BSTR;
vtparam2.bstrVal = CString(&lyrpack&).AllocSysString();
m_LayerInfo.AddParameter(&Name&, vtparam2);
VARIANT m_F
CMapXFields n_F
n_Fields.CreateDispatch(n_Fields.GetClsid());
n_Fields=dataSet.GetFields();
m_Fields.vt = VT_DISPATCH;
m_Fields.pdispVal = n_Fields.m_lpD
m_LayerInfo.AddParameter(&Fields&, m_Fields);
VARIANT m_F
CMapXFeatures n_Features=layer.AllFeatures();
m_Features.vt = VT_DISPATCH;
m_Features.pdispVal=n_Features.m_lpD
m_LayerInfo.AddParameter(&Features&, m_Features);
CMapXLayer packlyr = m_ctrlMapX.GetLayers().Add(m_LayerInfo);
//已将layer复制到临时表中
//从地图窗口
m_ctrlMapX.GetDatasets().Remove(&pack&);
m_ctrlMapX.GetLayers().Remove(layername);
//创建dataset for packlyr
vtLayer.vt = VT_DISPATCH;
vtLayer.pdispVal = packlyr.m_lpD
dataSet = m_ctrlMapX.GetDatasets().Add(miDataSetLayer, vtLayer,&pack&);
//创建新表
CMapXLayerInfo newlayerI
newlayerInfo.CreateDispatch(newlayerInfo.GetClsid());
newlayerInfo.SetType(7); //新表(miLayerInfoTypeNewTalbe)
newlayerInfo.AddParameter(&filespec&,COleVariant(layerFilespec));
newlayerInfo.AddParameter(&Name&, COleVariant(layername));
n_Fields=dataSet.GetFields();
m_Fields.vt = VT_DISPATCH;
m_Fields.pdispVal = n_Fields.m_lpD
newlayerInfo.AddParameter(&Fields&, m_Fields);
CMapXFeatures features = packlyr.AllFeatures();
VARIANT
fs.vt = VT_DISPATCH;
fs.pdispVal=features.m_lpD
newlayerInfo.AddParameter(&features&,fs);
newlayerInfo.AddParameter(&OverwriteFile&,COleVariant(&1&));
long lPosition = 4;//m_ctrlMapX.GetLayers().GetCount();
VARIANT
newlyr.vt=VT_DISPATCH;
newlyr.pdispVal=newlayerInfo.m_lpD
VARIANT
lp.vt = VT_I4;
lp.lVal = lP
m_ctrlMapX.GetLayers().Add(newlayerInfo.m_lpDispatch);
m_ctrlMapX.GetLayers().Move(2,(short)m_ctrlMapX.GetLayers().GetCount());
//删除临时表
m_ctrlMapX.GetDatasets().Remove(&pack&);
m_ctrlMapX.GetLayers().Remove(&lyrpack&);
发布于: 14:21
上面的值是picture的宽度值。。
您需要登录后才可以回帖,&或者&}

我要回帖

更多关于 比例尺怎么写 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信