首页 / 浏览问题 / 组件GIS / 问题详情
iObjects C++如何使用自定义点绘制线?
26EXP 2023年03月28日
iObjects C++ 11i中,使用pEditorWnd->SetUserAction(UGDrawParamaters::uaEdit,UGEditType::ET_PolyLine)时,通过鼠标左键点击添加线节点,请问有什么接口可以使用自定义的节点而不通过鼠标左键点击来添加吗?

1个回答

你的意思是你有线上面的所有节点坐标,先直接通过节点信息去添加线,不用鼠标去绘制吗

可以参考以下的代码:

UGDatasetVector * dataset = (UGDatasetVector *)m_pWorkspace->GetDataSource(0)->GetDataset(_U("New_Line"));    

 dataset->Open(); 

 UGQueryDef query = UGQueryDef(); 

 UGRecordset* recordset = dataset->Query(query);   

 //通过两个点构建一条线对象; 

 UGPoint2D point1 = UGPoint2D(112, 34);  

UGPoint2D point2 = UGPoint2D(112, 36);  

UGGeoLine* geoline = new UGGeoLine(); 

 geoline->Make(point1, point2);   

//以上为两个点构建一条线,如果有多个点构建一条折线,可以用make的其他回调方法,传入点串指针

//! \brief 构造一个子对象的GeoLine
    //! \param pPoints [in] 点串指针。
    //! \param nPntCount [in] 点串的点数目。
    //! \return 点数小于2个,返回false。
    //GEOMETRY_APIF UGbool Make( const UGPoint2D* pPoints, UGint nPntCount );    

 recordset->MoveFirst(); 

 recordset->AddNew(geoline);  

recordset->Update();

4,620EXP 2023年03月28日
不是这个意思。使用pEditorWnd->SetUserAction(UGDrawParamaters::uaEdit,UGEditType::ET_PolyLine)交互式绘制线要素时,是通过鼠标左键点击来添加一个个线的节点。我是想点击一个节点后,下一个节点不通过鼠标点击来添加,而是自己通过方位角和距离计算出下一个节点。
这个没有直接的接口,需要自己上层实现,自己根据设置的方位角和距离计算出下一个点的坐标位置,可以通过UGMapEditorWnd->OnLMouseDown去代码执行鼠标左键点击添加下一个点。目前没有现成的范例。
...