2018 SuperMap iObjects 常见问题解答集锦(二)

问:组件中紧缩文件型数据源的接口是什么啊?
答:Toolkit.CompactDatasource 方法

问:多视口情况下,在第一视口天际线分析成功,第二视口天际线分析崩溃?
答:需要使用同一个skyline对象,切换视口就不会崩,不能每次都实例化不同的skyline

问:如何在三维场景跟踪图层里面添加半透明的面对象?
答:只支持三维对象,并且需要将高度模式设置为非贴地,设置面的前景色geoStyle3D.FillForeColor = Color.FromArgb(50, Color.Red),不能使用填充符号。

问:如何构建圆柱对象?
答:GeoCylinder 对象,圆台对象,地面圆半径和顶面圆半径一直就是圆柱

问:在使用SuperMap iObjects9D时,发现当SceneControl对象失去焦点时,里面的对象就不再刷新了,如何解决?
答: 可以将SceneControl.IsAlwaysUpdate设置为true,这样当控件失去焦点后,对象就依然会刷新。

问:如何实现桌面场景中的多边形查询功能?
答: GeoRegion3D georegion3d = e.Geometry as GeoRegion3D;GeoRegion georegion = georegion3d.ConvertToRegion(); DatasetVector datasetvector =m_Workspace .Datasources [0].Datasets [“New_Point3D”] as DatasetVector;Recordset recordset = datasetvector.GetRecordset(false, CursorType.Static);GeoModel3D geomodel3d = ModelBuilder3D.LinearExtrude(georegion, true, 10, 0, 0, 0);List list = SpatialQuery3D.SpatialQuery(geomodel3d, recordset,PositionMode.Contains);

问:在一个图层上使用鼠标画了一个三角形(设置mapControl.Action为Action.CreatePolyline),现在要获取这个三角形的顶点坐标,如何获取几何图形Geometry的顶点列表?
答:可以使用PointInputEventHandler事件获取点坐标
mapControl.PointInputed += new PointInputEventHandler(mapControl_PointInputed);

问:设置点对象风格,达到发生警报的时候,点对象状态是以点对象为中心 ,不断形成红圈向外扩散,这个怎么做?
答: 现在我们组件还没提供在二维图层添加GIF图片的功能,点符号里也不能添加GIF图片,现在想要实现您所说的效果,需设置一个Timer,依次调用您由小变大的图片,在二维图层中实现实时更新。

问:在SuperMap iObjects C++中,如何在地图中只刷新跟踪图层呢?
答:使用SetRefreshFlag方法,设置为false,mapControlEditor->m_mapWnd.m_Map.SetRefreshFlag(false);
然后调用UGMapEditorWnd的SendInvalidateFunc()方法即可;

问:iObjects C++,怎么计算点选的多边形的面积?
答:获取到选中对象UGGeoRegion后,直接通过对象的GetArea方法直接获取面积。

问:iObject C++ 自带的gettingstarted例子,打开自带的China地图,其他都正常,就是无法显示地图的标注(如省会,城市的名称)?
答: 如果数据里面确定有标注图层,请检查是否是由于字体库缺失导致,在数据正常的情况下,通常是由于这个原因。

问:在SuperMap iObjects C++中,如何设置文本对象UGGeoText的位置信息?
答: 设置位置信息可以使用SetSubAnchor来进行设置,传入UGPoint2D对象和index即可。

问:在使用SuperMap iObjects C++时,希望编辑数据集的字段值信息,如何能够提升编辑数据的性能呢?
答: 在进行编辑的时候可以开启批量更新用于提高更新数据的性能,具体使用方法为在编辑前Recordset->EditBulk(true)开启批量更新,然后开始设置数据集的字段值,设置完成后调用Recordset->EditBulk(false)结束批量更新即可。

问:在SuperMap iObjects C++中,在地图中绘制对象时,如何或者正在绘制的对象呢?
答:可以先获取UGMapEditorWnd,然后通过地图窗口模拟类获取UGEditTool对象(UGMapEditorWnd->GetEditToolPack()->FindEditTool();),再获取UGEditTool的m_pEditObj属性即可。

问:SuperMap iObject C++如何在程序启动之前验证电脑环境里面是否有许可呢? 答:“UGbool result = UGLicense::VerifyCoreLicense(LicenseFeature::iObjectsCppCore);
LicenseFeature在LicenseDef.h里面;
UGLicense::VerifyCoreLicense(featureID);这个方法如果没有许可就抛异常出来
UGint result = UGLicense::Verify(featureID);这个方法只验证许可,不抛异常”

问:如何判断一个点是否在面内
答:UGGeometry *result = NULL;
UGbool aa = UGGeoOperator::Intersect(pregion, UGPOINT2D ,result);"

问:打开工作空间,不打开到地图,通过数据集去获取UGRecordset获取失败?
答: 如果不打开地图,在获取UGRecordset之前,需要先执行UGDatasetVector.Open()方法即可。

问:如何通过UGDatasetVector获取出里面的集合对象?
答:UGDatasetVector datasetVector = (UGDatasetVector)datasource->GetDatasetByTableName(_U("“BaseMap_R”"));
UGQueryDef query = UGQueryDef();
UGRecordset* recordset = datasetVector->Query(query);
for (int i = 0; i < recordset->GetRecordCount(); i++)
{
recordset->MoveTo(i);
UGGeometry * pTempGeomtry = NULL;
recordset->GetGeometry(pTempGeomtry);
UGGeoRegion * pregion = dynamic_cast<UGGeoRegion*>(pTempGeomtry);
}

问:设置图层风格?
答:UGLayer* layer = m_pMapWnd ->m_mapWnd.m_Map.m_Layers.GetLayerAt(0);
UGStyle* style = new UGStyle();
style->SetLineStyle(965134);
layer->SetStyle(*style);"

问:通过代码构建圆弧后UGRecordset添加对象失败?
答:如果数据集是线数据集,不支持直接存弧段数据,弧段数据存在cad图层里面。

问:打开数据源,同样的代码,打开第一个数据源成功,打开第二个其他的数据源失败?
答: 打开的时候需要设置dsConn->m_strAlias; 如果没有设置,由于默认都是一样的,第二次打开检测到已经存在这个名称的数据源,所以打开失败。

问:范例gettingStarted跑不起来,编译完成后运行不报错直接退出,直接运行exe,报错:“应用程序无法正常启动0xc000007b”
答:环境问题,qt安装好了后,需要先编译extensions4Qt,然后再编译运行gettingStarted。编译成功后,运行不报错直接退出。是由于程序对应不上dll版本。查看编译的位数,在环境变量里面需要将c++bin路径添加上去,debug 32位bind;64位bind_x64。release 32位bin,64位bin_x64 1114

问:工作空间保存失败
答: “WorkSpace有两种方法保存工作空间:一个save,用于保存已经存在的工作空间,不改变原有的名称,即本身存在*.smwu或者*.sxwu。需要注意的是在调用之前需要设置pWorkspack->m_WorkspaceConnection.bFailIfExists = false;另外一个是SaveAs,另存工作空间,即需要重新生成一个*.smwu或者*.sxwu。SaveAs方法中需要填参数:UGWorkspaceConnection,参数必须设置完整,下面是文件型工作空间其中必填的属性参数:
UGWorkspaceConnection wscon;
wscon.m_strServer = _U(”“C:/ceshi.smwu”");
wscon.m_nWorkspaceType = UGWorkspace::UGWorkspaceType::WS_Version_SMWU;
wscon.m_nVersion = m_pWorkSpace->GetVersion();
UGbool bSuc = m_pWorkSpace->SaveAs(wscon);"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值