MapObejcts组件应用设计(几何对象)

MapObjects2可以处理的几何元素有Point Line Polygon Circle Rectangle,每种元素定义成一个对象。这些对象统称为Shape,但没有定义Shape对象。除了Point以外,其它四种都提供了交互式输入方法:TrackLine TrackPolygon TrackCircle TrackRectangle

2.5.1 P oint对象

Point是最简单的对象,语句

Dim pt As  New MapObjects2.Point

pt.X = 30342

pt.Y = 43535

建立了一个Point实例。

2.5.2 LinePolygon对象

1图形坐标数据

MapObjects2中,LinePolygon图形都用Point的有序集合的集合定义,称为partsPoint的有序集合定义一条折线,称为part,part的集合命名为Parts。只有一条折线的LinePolygon实例的Parts集合中仅含有一个part。在Linepart的首尾两点不同,在Polygonpart的首尾两点用一个Point表示。

下面这段程序取自附属盘中的样例GeoData中的MouseDown事件过程,程序先根据鼠标位置查出一个省区,然后将省区多边形的坐标串加入到List1控件中。

Dim recs As MapObjects2.Recordset    '查询结果记录集

Dim curX As Single, curY As Single   '鼠标光标位置坐标

 

 Case “显示选择的多边形坐标数据

    Dim pt As MapObjects2.Point

      Dim dist As Double

      Set pt = Map1.ToMapPoint(curX, curY)  根据屏幕坐标建立point实例

      dist = 1000

      Set recs = Map1.Layers(“china”).SearchByDistance(pt, dist, “”) ‘按距离查询

      If recs.EOF Then Exit Sub

      在列表框中显示省界坐标

      Dim shp As Polygon

      Dim pts As MapObjects2.Points

      Dim i As Integer

      Dim j As Integer

      Set shp = recs(“Shape”).Value

      Me.List1.Clear

      Me.List1.AddItem “Parts.Count = “ & shp.Parts.Count

      Me.List1.AddItem recs.Fields(“Name”) + “省界坐标

      For j = 0 To shp.Parts.Count-1

        Set pts = shp.Parts(j)

        For i = 0 To pts.Count - 1

        Me.List1.AddItem (Str(pts.Item(i).X) & “  “ & Str(pts.Item(i).Y))

        Next i

      Next j

      Map1.Refresh  触发Map1_AfterTrackingLayerDraw事件过程,绘制查询结果图

  End Select

2 Points集合与Parts集合

  PolygonLine对象中,Points是点的集合,PartsPoints的集合。以下是集合上的常用操作:

Dim poly As MapObjects2.Polygon

Dim pts As MapObjects2.Points

Set poly = Map1.TrackPolygon  鼠标跟踪绘制一个多边形

Set pts = poly.Parts.Item(0)    获得多边形中Points集合的引用

pts.Remove  pts.Count –1   删除多边形上的最后一点

Dim pt As New MapObjects2.Point

pt.X = 2300

pt.Y = 4500

pts.Set 2 , pt     替换pts集合中的点pts.Item(2)

pts.Reverse      改变pts中点的排列方向

 

Polygon对象中,Points集合中点的排列方向赋予了特殊的含义。简单Polygon边界Points点按顺时针方向排列。含有岛区的复合Polygon的外围边界线点按顺时针方向排列,内部岛区边界线点按逆时针方向排列。

Parts集合是不可创建对象,PolygonLineParts属性也是只读的。在创建PolygonLine对象的实例同时创建了Parts实例,且用Parts属性引用Parts实例。可按如下步骤建立一个完整的Polygon实例:

1创建一个Polygon对象实例。

2创建Points对象实例。

3创建Point对象实例,设置它的XY属性值,用Pionts.Add方法添加到Points实例中。

4重复步骤3,将所有的点加入到Points实例中。

5Polygon.Parts.Add方法将Points实例加入到Parts属性中。

PartPolygon用上述5步即可建立。 对于多PartPolygon重复步骤5

同理可以建立Line实例。

 

2.5.3 几何对象的运算

MapObject2 的几何对象共有6,符号常量由枚举表ShapeTypeConstants定义如下

符号常量

对象名

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值