Dim recs As MapObjects2.Recordset
Dim Layer As MapObjects2.MapLayer
Dim P1 As MapObjects2.Point
'下面的代码要写到鼠标的mousedown事件里
If recs.Updatable Then
With Layer.Records
.AddNew
.Fields("Shape").Value = P1'添加新特征
'其他字段信息可以在这里写上
.Update
.StopEditing
End With
Map1.Refresh
Else
MsgBox "图层不可编辑"
End If
上述代码在画线\画点\画线是通用的.关键是.Fields("Shape").Value = P1
如果是点状对象,你就要把p1定义为点对象,如果是面状的,自然要定义为面对象(dim layer as mapobject2.line),定义现状对象方法类推.
后来发现,shp文件有多点这一种类型.(所谓多点,按我的理解图上多个点可以是一个记录)我用上述代码,就是怎么也成功不了.只能空加上个记录,而无法加上图形.(比如图上三个点,属性也有三条记录.执行上述程序,属性上是4条而图上仍然是3个点)如果说mo中point对象对应Shape 文件中的point要素类型.那么Shape 文件中的要素类型MultiPoint 对应MO中的哪个对象呢??后来发现紧接mapobjec2.point还有一个mapobjec2.points.感觉有门!后来证实Shape 文件中的要素类型MultiPoint 的确对应MO中的Points对象.这样对于加多点上述程序就写成了:
Dim ptsCol As New MapObjects2.Points
Dim recs As MapObjects2.Recordset
Dim Layer As MapObjects2.MapLayer
Dim P1 As MapObjects2.Point
ptsCol.Add NewPoint
Set P1 = Map1.ToMapPoint(X, Y)
pts.Add P1
If recs.Updatable Then
With Layer.Records
.AddNew
.Fields("Shape").Value = Pts'添加新特征
'其他字段信息可以在这里写上
.Update
.StopEditing
End With
Map1.Refresh
Else
&n






