首页 / 浏览问题 / 组件GIS / 问题详情
iobject如何通过代码在地图中添加点图层并给点图层中加点
3EXP 2022年11月03日
使用产品:iobject 10i 操作系统:win10 问题描述如题,需要在visual studio的界面中根据界面输入的二维经纬度信息(该信息不能预先获取,所以不能在idestop中操作好再调用其图层)向地图中加点,感觉该操作需要首先加点图层,再调用函数加点,但是不知道具体用哪个函数。感谢任何回复。

1个回答

您好,根据您的需求,建议您可以参考一下逻辑实现具体的功能:

  1. 新建点数据集;
  2. 将点数据集添加到地图;
  3. 将点图层设置为可编辑状态;
  4. 根据点图层获取对应的点数据集;
  5. 获取点数据集对应的记录集;
  6. 根据输入的信息新建GeoPoint点对象;
  7. 将点对象添加到点记录集中,并关闭记录集;
  8. 刷新当前地图。

希望可以帮到您。

2,258EXP 2022年11月03日

非常感谢您提供的思路,我对于c#开发和supermap都比较小白,所以想再请教您以下几个问题:

1. 目前1-2步我通过在idesktop中添加了一个空的点图层,再在iobjects中打开它实现了。如果直接在iobject生成并添加应该调用哪个函数。

2.目前我的代码报了无法改变只读函数的错(见下图),应该是第三步未设计为可编辑。可编辑应采用什么函数。

3.第6步中我目前采用了GetPoint中其中一个定义方法:GetPoint(X,Y),并随意赋值了一组XY进行测试。但实际中输入的数据是经纬度信息,想请教X,Y和经纬度之间的转换有没有更合适的方法(目前用的应该是官方demo的china地图,这个地图的点好像自带了经纬度和坐标信息)。

感谢您提供的帮助。

您好,关于您提到的问题,下面依次解答:

  1. 新建数据集需要基于工作空间对象操作,基于矢量数据集信息类(DatasetVectorInfo)新建点数据集;
  2. 截图中的报错信息不是因为没有设置图层为可编辑状态,而是您获取记录集的时候使用的静态游标,静态游标只能读取数据无法修改或添加数据,需要使用动态游标的时候才可以修改或添加数据;
  3. 需要根据您的点数据集坐标系判断,如果您的点数据集本身就是经纬度坐标系,此时新建GeoPoint对象的时候就输入经纬度信息。如果您需要将点位置转换为经纬度的话,可以使用 CoordSysTranslator.Convert 接口进行投影坐标转换。

关于上述类和接口的详细使用方式,建议您参考 iObjects .NET 离线帮助文档,如下图可以进行检索:

非常感谢您
...