VB下鹰眼图实现的思路是这样的:在某一Form上放两个MapX控件:Map1(主图),Map2(鹰眼图);然后在鹰眼图上创建一个图层,在该图层上添加一个矩形Feature,该矩形的大小随着主图边界而变化。
具体实现参考下面详细代码。
Dim m_Layer As Layer ’鹰眼图上临时图层
Dim m_Fea As MapXLib.Feature ’鹰眼图上反映主地图窗口位置的Feature
Private Sub Form_Load()
Set m_Layer = Map2.Layers.CreateLayer(Rectlayer) ’在Map2创建图层
End Sub
’根据map1的Bounds在Map2上绘制矩形Feature
Private Sub Map1_MapViewChanged()
Dim tempFea As MapXLib.Feature ’声明Feature变量
Dim tempPnts As MapXLib.Points ’声明Points变量
Dim tempStyle As MapXLib.Style ’声明Style变量
’矩形边框还没有创建时
If m_Layer.AllFeatures.Count = 0 Then
’设置矩形边框样式
Set tempStyle = New MapXLib.Style ’创建Style对象
tempStyle.RegionPattern = miPatternNoFill ’设置Style的矩形内部填充样式
tempStyle.RegionBorderColor = 255 ’设置Style的矩形边框颜色
tempStyle.RegionBorderWidth = 2 ’设置Style的矩形边框宽度
'在图层创建大小为Map1的边界的Rectangle对象
Set tempFea = Map2.FeatureFactory.CreateRegion(Map1.Bounds, tempStyle)
Set m_Fea = m_Layer.AddFeature(tempFea) ’添加矩形边框
El ’否则,根据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
’鹰眼图上鼠标单击用来导航主图,其方法是把鼠标处的坐标设置为主图的中心
Private Sub Map2_MouDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim MapX As Double ’定义x坐标变量
Dim MapY As Double ’定义y坐标变量
’把屏幕坐标转换为地图坐标
Map2.ConvertCoord X, Y, MapX, MapY, miScreenToMap
’设置主图的中心x坐标和y坐标
Map1.CenterX = MapX
Map1.CenterY = MapY
End Sub
本文发布于:2022-10-29 15:06:26,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/83/406628.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |