返回首页
当前位置: 主页 > GPS学院 > 应用软件 >

用MapX快速开发(3)

时间:2008-01-18 10:58来源:GPS之家-导航之家 作者:www.gpsuu.com
For I=1 to Ftrs.Count 执行语句 Next SET Pnt =Nothing set TempCir =Nothing set FeaFac =Nothing 3、 相交 判断两个图元是否有交点以及交点坐标信息。 (1)判断是否相交 IF Lyr.IntersectionTest( ftr1, ftr2,

For I=1 to Ftrs.Count
   ‘执行语句
Next

SET Pnt =Nothing
set TempCir =Nothing
set FeaFac =Nothing

3、 相交
判断两个图元是否有交点以及交点坐标信息。
(1)判断是否相交
IF Lyr.IntersectionTest( ftr1, ftr2, miIntersectFeature ) THEN
   ‘交点
END IF

(2)获取相交点坐标信息
‘交点
Dim Ftr AS MapXlib.Feature

 

 SET Ftr=MainMap.FeatureFactory. IntersectFeatures(Ftr1,Ftr2)
‘交点坐标信息
For J=1 to Ftr.parts.item(1).count
    X1= Ftr.parts.item(1).Item(J).X
    Y1= Ftr.parts.item(1).Item(J).Y
Next

4、 测距
使用Map对象的Distance方法。如何测量任意多边形的周长?
使用累加的方法,还要使用图元节点集合。
DistanceValue=0
‘第一个点
Pnt.Set Ftr.Parts.Item(1).Item(1).X, Ftr.Parts.Item(1).Item(1).Y
For j=2 TO Ftr.Parts.Item(1).Count
   ‘累加
   X1= Ftr.Parts.Item(1).Item(j-1).X
   Y1= Ftr.Parts.Item(1).Item(j-1).Y
   X2= Ftr.Parts.Item(1).Item(j).X
Y2= Ftr.Parts.Item(1).Item(j).Y
   DistanceValue = DistanceValue +MainMap.Distance(X1, Y1, X2, Y2)
Next
‘多边形周长
Msgbox DistanceValue+” ”+MainMap.MapUnit

 

四、对象编辑

(1)、对属性的编辑
主要使用Fields对象。示例:
Dim Flds AS MapXlIB.Fields

‘修改当前图层的每一个字段
For J=1 to Flds.Count
Lyr.KeyField= Flds.Item(j).Name ‘使当前图层指向J字段
  ‘更新当前图元的J字段值
  Ftr.KeyValue=NewValueStr(J)
  Ftr.Update True    ‘并未写入硬盘
Next
Lyr.Refresh      ‘保存修改到硬盘

(2)、移动地图
首先创建一个移动工具句柄
MainMap.CreateCustomTool MoveFeature, miToolTypeLine, miPanCursor
在Map对象的ToolUsed事件的ToolNum参数为当前所激活的工具捕捉MoveFeature工具句柄‘传过来的参数:X1,Y1,X2,Y2
Select case ToolNum
   ……..
   Case  MoveFeature
Dim Lyr AS MapXlib.Layer
Dim Ftr AS MapXlib.Feature
Dim Ftrs AS MapXlib.Features

Dim Xe,Ye AS Double     ‘坐标偏移量

Xe=X2-X1
Ye=Y2-Y1

 

 Set Lyr=Mainmap.Layers.Item(LayerName)
Set Ftrs=Lyr.Selection.Clone      ‘将当前图层中选定的集合复制到Ftrs变量中
MainMap.AutoRedraw=False
Lyr.Editable=True
For J=1 to Ftrs.Count
   Set Ftr=Ftrs.Item(J)
   Ftr.Offset Xe,Ye
   Ftr.Update True
Next
Lyr.Refresh
Lyr.Editable=False
MainMap.AutoRedraw=True

SET lyr=Nothing
SET Ftr=Nothing
End Select
(3)、样式更新
 Dim NewStyle AS MapXLib.Style

‘初始赋值
Set Lyr=MainMap.Layers.Item(LayerName)
Set Ftrs=Lyr.AllFeatures
Set NewStyle=Ftrs.Item(1).Style
‘设置样式
With NewStyle
    .SymbolType = miSymbolTypeBitmap
    .SymbolBitmapSize = 24
    .SymbolBitmapTransparent = False
    .SymbolBitmapName = YIEL2-32.BMP
End With
‘更新
MainMap.AutoRedraw=False
Lyr.Editable=True
SET Ftr.Style=NewStyle
Ftr.Update True
Lyr.Refresh
Lyr.Editable=False
MainMap.AutoRedraw=True

 

 (责任编辑:admin)
[ GPSUU整理发布,版权归原作者所有。]
顶一下
(1)
50%
踩一下
(1)
50%
------分隔线----------------------------

推荐内容