VB+mapx实现各种专题图的示例
Private Sub Command5_Click()
'创建专题图层
Dim oDs As MapXLib.Dataset
Dim oLayer As MapXLib.Layer
Dim oTheme As MapXLib.Theme
Dim oFields As New MapXLib.Fields
Dim oField As MapXLib.Field
Dim oCoordSys As MapXLib.CoordSys
Dim strLayerName As String
Dim nType As Integer
Dim s As Integer
'改变投影系
Set oCoordSys = Map1.DisplayCoordSys.Clone
SetCoordsys
'设置专题图层
strLayerName = GetThemeLayerName()
If strLayerName = Then
MsgBox 请选择绑定图层
Exit Sub
End If
'设置专题绑定数据集
Set oLayer = Map1.Layers.Item(strLayerName)
Map1.DataSets.RemoveAll
Set oDs = Map1.DataSets.Add(miDataSetLayer, oLayer, oLayer.KeyField)
'获得专题图类型
nType = GetThemeType
If nType = -1 Or nType = 9 Then
MsgBox 请选择专题类型
Exit Sub
End If
'设置专题图
oFields.RemoveAll
Set oField = oFields.Add(oDs.Fields.Item(2), data1
oDs.Themes.RemoveAll
If nType = 1 Or nType = 2 Then
oFields.Add oDs.Fields.Item(3), data2
Set oTheme = oDs.Themes.Add(nType, oFields)
ElseIf nType = 9 Then
'Set oTheme = oDs.Themes.Add(nType)
Else
Set oTheme = oDs.Themes.Add(nType, oField)
End If
'还原投影系
Set Map1.DisplayCoordSys = oCoordSys
'Set Map1.NumericCoordSys = oCoordSys
Set Map1.NumericCoordSys = Map1.DisplayCoordSys
End Sub
Sub SetCoordsys()
'设置投影系
Dim oDatum As New MapXLib.Datum
oDatum.Set 0, 0, 0, 0, 0, 0, 0, 0, 0
Map1.DisplayCoordSys.Set miLongLat, oDatum, miUnitDegree
Set Map1.NumericCoordSys = Map1.DisplayCoordSys
End Sub
Private Function GetThemeType() As Integer
'获得专题图类型
Dim nType As Integer, nIndex As Integer
nIndex = Combo1.ListIndex
Select Case nIndex
Case 0 '范围图
nType = 0
Case 1 '柱状图
nType = 1
Case 2 '饼状图
nType = 2
Case 3 '等级符号图
nType = 3
Case 4 '点密度图
nType = 4
Case 5 '独立值图
nType = 5
Case 6 '自动专题图
nType = 6
Case 7 '标注范围专题图
nType = 7
Case 8 '标注独立值专题图
nType = 8
Case 9 '非专题图
nType = 9
Case Else '提示用户选择专题类型
nType = -1
End Select
GetThemeType = nType
End Function
Private Function GetThemeLayerName() As String
'获得专题图层名称
Dim strLayerName As String
Dim nIndex As Integer
nIndex = Combo2.ListIndex
If nIndex < 0 Then
strLayerName =
Else
strLayerName = Combo2.List(nIndex)
End If
GetThemeLayerName = strLayerName
End Function
Private Sub Form_Load()
Dim i As Integer, nLayerCount As Integer
'加载专题图类型
Combo1.AddItem 范围图, 0
Combo1.AddItem 柱状图, 1
Combo1.AddItem 饼状图, 2
Combo1.AddItem 等级符号图, 3
Combo1.AddItem 点密度图, 4
Combo1.AddItem 独立值图, 5
Combo1.AddItem 自动专题图, 6
Combo1.AddItem 标注范围专题图, 7
Combo1.AddItem 标注独立值专题图, 8
Combo1.AddItem 非专题图, 9
'加载图层列表
If Map1.Layers.Count > 0 Then
nLayerCount = Map1.Layers.Count
For i = 1 To nLayerCount
Combo2.AddItem Map1.Layers.Item(i).Name, i - 1
Next
End If
End Sub
'创建专题图层
Dim oDs As MapXLib.Dataset
Dim oLayer As MapXLib.Layer
Dim oTheme As MapXLib.Theme
Dim oFields As New MapXLib.Fields
Dim oField As MapXLib.Field
Dim oCoordSys As MapXLib.CoordSys
Dim strLayerName As String
Dim nType As Integer
Dim s As Integer
'改变投影系
Set oCoordSys = Map1.DisplayCoordSys.Clone
SetCoordsys
'设置专题图层
strLayerName = GetThemeLayerName()
If strLayerName = Then
MsgBox 请选择绑定图层
Exit Sub
End If
'设置专题绑定数据集
Set oLayer = Map1.Layers.Item(strLayerName)
Map1.DataSets.RemoveAll
Set oDs = Map1.DataSets.Add(miDataSetLayer, oLayer, oLayer.KeyField)
'获得专题图类型
nType = GetThemeType
If nType = -1 Or nType = 9 Then
MsgBox 请选择专题类型
Exit Sub
End If
'设置专题图
oFields.RemoveAll
Set oField = oFields.Add(oDs.Fields.Item(2), data1
oDs.Themes.RemoveAll
If nType = 1 Or nType = 2 Then
oFields.Add oDs.Fields.Item(3), data2
Set oTheme = oDs.Themes.Add(nType, oFields)
ElseIf nType = 9 Then
'Set oTheme = oDs.Themes.Add(nType)
Else
Set oTheme = oDs.Themes.Add(nType, oField)
End If
'还原投影系
Set Map1.DisplayCoordSys = oCoordSys
'Set Map1.NumericCoordSys = oCoordSys
Set Map1.NumericCoordSys = Map1.DisplayCoordSys
End Sub
Sub SetCoordsys()
'设置投影系
Dim oDatum As New MapXLib.Datum
oDatum.Set 0, 0, 0, 0, 0, 0, 0, 0, 0
Map1.DisplayCoordSys.Set miLongLat, oDatum, miUnitDegree
Set Map1.NumericCoordSys = Map1.DisplayCoordSys
End Sub
Private Function GetThemeType() As Integer
'获得专题图类型
Dim nType As Integer, nIndex As Integer
nIndex = Combo1.ListIndex
Select Case nIndex
Case 0 '范围图
nType = 0
Case 1 '柱状图
nType = 1
Case 2 '饼状图
nType = 2
Case 3 '等级符号图
nType = 3
Case 4 '点密度图
nType = 4
Case 5 '独立值图
nType = 5
Case 6 '自动专题图
nType = 6
Case 7 '标注范围专题图
nType = 7
Case 8 '标注独立值专题图
nType = 8
Case 9 '非专题图
nType = 9
Case Else '提示用户选择专题类型
nType = -1
End Select
GetThemeType = nType
End Function
Private Function GetThemeLayerName() As String
'获得专题图层名称
Dim strLayerName As String
Dim nIndex As Integer
nIndex = Combo2.ListIndex
If nIndex < 0 Then
strLayerName =
Else
strLayerName = Combo2.List(nIndex)
End If
GetThemeLayerName = strLayerName
End Function
Private Sub Form_Load()
Dim i As Integer, nLayerCount As Integer
'加载专题图类型
Combo1.AddItem 范围图, 0
Combo1.AddItem 柱状图, 1
Combo1.AddItem 饼状图, 2
Combo1.AddItem 等级符号图, 3
Combo1.AddItem 点密度图, 4
Combo1.AddItem 独立值图, 5
Combo1.AddItem 自动专题图, 6
Combo1.AddItem 标注范围专题图, 7
Combo1.AddItem 标注独立值专题图, 8
Combo1.AddItem 非专题图, 9
'加载图层列表
If Map1.Layers.Count > 0 Then
nLayerCount = Map1.Layers.Count
For i = 1 To nLayerCount
Combo2.AddItem Map1.Layers.Item(i).Name, i - 1
Next
End If
End Sub
from:http://www.zdor.cn/inst/html/info/200845.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」