3.4.5 IFeatureModelLayer


IFeatureModelLayer是要素图层对象。要素图层对象是将矢量图层对象的操作进行统一管理而形成的对象。通过要素图层对象可以对矢量图层中的要素进行添加,更新,编辑,替换,删除等操作。具体使用可参考矢量编辑相关功能。

要素图层对象是在创建矢量图层对象之后,通过MapManagerCOM组件的GetFeatureModelLayer()接口创建的。

1.SetLayerID

说明:

设置关联图层ID。一般在创建要素图层对象之后,系统内部会调用该接口绑定关联矢量图层的ID

语法:

Javascript调用

SetLayerID(id)

C++调用

HRESULT SetLayerID([in] LONG id)

C#调用

void SetLayerID(long id)

参数:

参数名 参数类型 说明
id long 图层ID

2.GetLayerID

说明:

获取关联图层ID。

语法:

Javascript调用

GetLayerID()

C++调用

HRESULT GetLayerID([out,retval] LONG* layerId)

C#调用

long GetLayerID()

返回值: layerId

layerId表示图层ID。

3.GetMaxFeatureID

说明:

获取要素ID的最大值。要素ID是要素的唯一标识。矢量图层添加到场景中之后,矢量图层中加载的要素ID是自增长的,通过该接口可以获取要素ID的最大值,该值也代表已经加载到场景中的要素数量。

语法:

Javascript调用

GetMaxFeatureID()

C++调用

HRESULT GetMaxFeatureID([out,retval] LONG* id)

C#调用

long GetMaxFeatureID()

返回值: id

id表示要素ID的最大值

4.GetFeatureById

说明:

根据ID获取要素对象。

语法:

Javascript调用

GetFeatureById(id, iFeature)

C++调用

HRESULT GetFeatureById([in] LONG id, [in] IUnknown* iFeature, [out,retval] VARIANT_BOOL* state)

C#调用

bool GetFeatureById(long id, IFeature iFeature)

参数:

参数名 参数类型 说明
id long 要素ID
iFeature IFeature 要素对象

返回值: state

state表示是否成功。true-成功;false-失败。

5.GetFeatureByPick

说明:

根据拾取获取要素对象。调用该接口之前,需通过矢量拾取响应器拾取到要素。

语法:

Javascript调用

GetFeatureByPick(iFeature)

C++调用

HRESULT GetFeatureByPick([in] IUnknown* iFeature, [out,retval] VARIANT_BOOL* state)

C#调用

bool GetFeatureByPick(IFeature iFeature)

参数:

参数名 参数类型 说明
iFeature IFeature 要素对象

返回值: state

state表示是否成功。true-成功;false-失败。。true-成功;false-失败。

6.DeleteFeature

说明:

删除拾取的要素。调用该接口之前,需通过矢量拾取响应器拾取到要素。

语法:

Javascript调用

DeleteFeature()

C++调用

HRESULT DeleteFeature([out,retval] VARIANT_BOOL* state)

C#调用

bool DeleteFeature()

返回值: state

state表示是否成功。true-成功;false-失败。

7.AddFeature

说明:

添加要素。将要素添加到要素图层对象中,在添加成功之后,会在场景中显示该要素。

语法:

Javascript调用

AddFeature(iFeature)

C++调用

HRESULT AddFeature([in] IUnknown* iFeature)

C#调用

void AddFeature(IFeature iFeature)

参数:

参数名 参数类型 说明
iFeature IFeature 要素对象

8.SaveLayer

说明:

保存图层。该接口会将所有的修改保存到矢量图层关联的shp文件中。

语法:

Javascript调用

SaveLayer()

C++调用

HRESULT SaveLayer([out,retval] VARIANT_BOOL* state)

C#调用

bool SaveLayer()

返回值: state

state表示是否成功。true-成功;false-失败。

9.SaveAsLayer

说明:

另存图层。该接口会将矢量图层中的所有要素信息另存到指定的shp文件中。如果shp文件不存在,会新建该文件。

语法:

Javascript调用

SaveAsLayer(path)

C++调用

HRESULT SaveAsLayer([in] BSTR path, [out,retval] VARIANT_BOOL* state)

C#调用

bool SaveAsLayer(string path)

参数:

参数名 参数类型 说明
path string 矢量文件路径

返回值: state

state表示是否成功。true-成功;false-失败。

10.GetNearestFeatureId

说明:

获取距离最近的要素ID。该接口会返回字符串结果,其结构为ID,距离;ID,距离;。 多个结果中间以;进行分隔。并且会按照距离进行排序,距离最近的结果在最前面。

语法:

Javascript调用

GetNearestFeatureId(posX, posY, posZ, range)

C++调用

HRESULT GetNearestFeatureId([in] DOUBLE posX, [in] DOUBLE posY, [in] DOUBLE posZ, [in] DOUBLE range, [out,retval] BSTR* value)

C#调用

string GetNearestFeatureId(double posX, double posY, double posZ, double range)

参数:

参数名 参数类型 说明
posX double 经度坐标
posY double 纬度坐标
posZ double 高程坐标
range double 范围,以XYZ坐标和range构建的查询范围

返回值: value

value表示获取的结果。

11.SetHighlight

说明:

设置图层高亮

语法:

Javascript调用

SetHighlight(r, g, b, a, state)

C++调用

HRESULT SetHighlight([in] DOUBLE r, [in] DOUBLE g, [in] DOUBLE b, [in] DOUBLE a, [in] VARIANT_BOOL state)

C#调用

void SetHighlight(double r, double g, double b, double a, bool state)

参数:

参数名 参数类型 说明
r double 颜色Red(红色),取值范围在0-1之间
g double 颜色Green(绿色),取值范围在0-1之间
b double 颜色Blue(蓝色),取值范围在0-1之间
a double Alpha,取值范围在0-1之间
state bool 高亮状态

12.GetFeatureSchema

说明:

获取要素属性表头。该接口会反正要素属性表头字符串,字符串结构为 字段名称:字段类型;,中间以;分隔。

语法:

Javascript调用

GetFeatureSchema()

C++调用

HRESULT GetFeatureSchema([out,retval] BSTR* value)

C#调用

string GetFeatureSchema()

返回值: value

value表示返回的结果值。

13.SetEditType

说明:

设置编辑类型。

语法:

Javascript调用

SetEditType(type)

C++调用

HRESULT SetEditType([in] SHORT type)

C#调用

void SetEditType(short type)

参数:

参数名 参数类型 说明
type short 编辑类型

编辑类型:

id 类型
0 无效操作
1 要素移动
2 顶点增加
3 顶点拾取
4 顶点移动
5 顶点删除

14.GetEditType

说明:

获取当前编辑类型。

语法:

Javascript调用

GetEditType()

C++调用

HRESULT GetEditType([out,retval] SHORT* type)

C#调用

short GetEditType()

返回值: type

type表示返回的编辑类型

编辑类型:

id 类型
0 无效操作
1 要素移动
2 顶点增加
3 顶点拾取
4 顶点移动
5 顶点删除

15.SaveVectorEdit

说明:

保存矢量编辑。

语法:

Javascript调用

SaveVectorEdit()

C++调用

HRESULT SaveVectorEdit([out,retval] VARIANT_BOOL* state)

C#调用

bool SaveVectorEdit()

返回值: state

state表示是否成功。true-成功;false-失败。

16.CancelVectorEdit

说明:

取消矢量编辑。

语法:

Javascript调用

CancelVectorEdit()

C++调用

HRESULT CancelVectorEdit([out,retval] VARIANT_BOOL* state)

C#调用

bool CancelVectorEdit()

返回值: state

state表示是否成功。true-成功;false-失败。

17.DeleteFeatureByGeoPos

说明:

根据经纬度删除要素。该接口会根据传入的坐标与相机远截面形成直线,然后与要素图层进行求交,并将求交到的要素进行删除。因此在调用接口之前,需要保证待删除的要素在场景中显示,传入的坐标值也应该能保证会求交到待删除的要素。

语法:

Javascript调用

DeleteFeatureByGeoPos(posX, posY, posZ)

C++调用

HRESULT DeleteFeatureByGeoPos([in] DOUBLE posX, [in] DOUBLE posY, [in] DOUBLE posZ, [out,retval] VARIANT_BOOL* state)

C#调用

bool DeleteFeatureByGeoPos(double posX, double posY, double posZ)

参数:

参数名 参数类型 说明
posX double 经度坐标
posY double 纬度坐标
posZ double 高程坐标

返回值: state

state表示是否成功。true-成功;false-失败。

18.UpdateFeatureByNew

说明:

通过新要素进行要素更新。该接口会用新的要素替换目标要素。如果目标要素不存在,则将新要素添加到要素图层中;如果新要素为空,则只删除目标要素。

语法:

Javascript调用

UpdateFeatureByNew(iOldFeature, iNewFeature)

C++调用

HRESULT UpdateFeatureByNew( [in] IUnknown* iOldFeature, [in] IUnknown* iNewFeature, [out, retval] VARIANT_BOOL* state )

C#调用

bool UpdateFeatureByNew(IFeature iOldFeature, IFeature iNewFeature)

参数:

参数名 参数类型 说明
iOldFeature IFeature 目标要素对象,即会被删除的要素对象
iNewFeature IFeature 新要素对象,即会添加到图层的要素对象

返回值: state

state表示是否成功。true-成功;false-失败。

19.UpdateFeatureById

说明:

通过ID进行要素更新。该接口会用新的要素替换传入ID所指向的要素。如果ID指向的要素不存在,则将新要素添加到要素图层中;如果新要素为空,则只删除ID指向的要素。

语法:

Javascript调用

UpdateFeatureById(id, iNewFeature)

C++调用

HRESULT UpdateFeatureById([in] LONG id, [in] IUnknown* iNewFeature,  [out, retval] VARIANT_BOOL* state)

C#调用

bool UpdateFeatureById(long id, IFeature iNewFeature)

参数:

参数名 参数类型 说明
id long 目标要素ID,即会被删除的要素对象ID
iNewFeature IFeature 新要素对象,即会添加到图层的要素对象

返回值: state

state表示是否成功。true-成功;false-失败。

20.CreateFeatureCursor

说明:

创建要素查询游标。根据输入的范围进行要素查询,并创建游标状态。当范围为0,0,0,0时查询整个图层。

语法:

Javascript调用

CreateFeatureCursor(MinXPos, MaxXPos, MinYPos, MaxYPos, Srs)

C++调用

HRESULT CreateFeatureCursor([in] DOUBLE MinXPos, [in] DOUBLE MaxXPos, [in] DOUBLE MinYPos, [in] DOUBLE MaxYPos, [in] BSTR Srs, [out,retval] VARIANT_BOOL* state)

C#调用

bool CreateFeatureCursor(double MinXPos, double MaxXPos, double MinYPos, double MaxYPos, string Srs)

参数:

参数名 参数类型 说明
MinXPos double X方向最小值
MaxXPos double X方向最大值
MinYPos double Y方向最小值
MaxYPos double Y方向最大值
Srs string 坐标参考值

返回值: state

state表示是否成功。true-成功;false-失败。

21.GetNextFeature

说明:

获取下一个要素。该接口必须在CreateFeatureCursor()之后调用,获取的要素从该参数返回。

语法:

Javascript调用

GetNextFeature(iFeature)

C++调用

HRESULT GetNextFeature([in] IUnknown* iFeature, [out,retval] VARIANT_BOOL* state)

C#调用

bool GetNextFeature(IFeature iFeature)

参数:

参数名 参数类型 说明
iFeature IFeature 要素对象

返回值: state

state表示是否成功。true-成功;false-失败。

22.ClearFeatureCursor

说明:

清空游标。在使用完要素查询游标之后,需通过该接口进行游标的清除操作。

语法:

Javascript调用

ClearFeatureCursor()

C++调用

HRESULT ClearFeatureCursor([out,retval] VARIANT_BOOL* state)

C#调用

bool ClearFeatureCursor()

返回值: state

state表示是否成功。true-成功;false-失败。

23.AddField

说明:

添加属性字段。可以为矢量图层添加新的属性字段。添加时可设定属性字段名称、属性字段类型和默认值。

语法:

Javascript调用

AddField(fieldName, fieldType, defaultValue)

C++调用

HRESULT AddField([in] BSTR fieldName, [in] SHORT fieldType, [in] BSTR defaultValue, [out,retval] VARIANT_BOOL* state)

C#调用

bool AddAttribute(string fieldName, short fieldType, string defaultValue)

参数:

参数名 参数类型 说明
fieldName string 属性字段名称
fieldType short 属性值类型。类型见下表
defaultValue string 属性字段默认值

属性值类型

属性值类型 数值类型
1 int
2 long
3 float
4 double
5 string
6 bool

返回值: state

state表示是否添加成功。true-成功; false-失败。

24.DeleteField

说明:

删除属性字段。可以将矢量图层的某个属性字段删除。

语法:

Javascript调用

DeleteField(fieldName)

C++调用

HRESULT DeleteField([in] BSTR fieldName, [out,retval] VARIANT_BOOL* state)

C#调用

bool DeleteField(string fieldName)

参数:

参数名 参数类型 说明
fieldName string 属性字段名称

返回值: state

state表示是否删除成功。true-成功; false-失败。

results matching ""

    No results matching ""