MapX如何在图层上添加一个点的代码实例
- 组件式GIS
- 2007-10-10
- 125热度
- 0评论
MapX如何在图层上添加一个点的代码实例
CMapXPoint pnt;
CMapXFeature ftr;
CMapXStyle style;
style.CreateDispatch(style.GetClsid());
//设置样式点风格。(节点式)
style.SetSymbolType(miSymbolTypeVector);
style.SetSymbolCharacter(34);//设置显示的符号。
style.SetSymbolVectorSize(48);//设置符号大小。
style.SetSymbolVectorColor(RGB(0,255,0));//设置符号颜色。
//style.SetSymbolBitmapColor(RGB(255,0,0));
style.SetSymbolBitmapTransparent(TRUE);
style.SetSymbolBitmapName("Mapinfo Real Estate");
//style.SetSymbolBitmapSize(50);
//style.SetSymbolBitmapName("FIRE1-32.BMP");
//style.PickSymbol();//显示图标选择对话框。
//停止自动刷新。
m_ctrlMapX.SetRedraw(FALSE);
//设置图层为可修改。
m_ctrlMapX.GetLayers().Item("terminal").SetEditable(TRUE);
//设置图层为动态图层。
//m_ctrlMapX.GetLayers().SetAnimationLayer(m_ctrlMapX.GetLayers().Item("terminal"));
//分发样式点。
//pnt.CreateDispatch(pnt.GetClsid());
//pnt.Set(m_ctrlMapX.GetCenterX(),m_ctrlMapX.GetCenterY());
VARIANT vart,sty;
vart.vt = VT_DISPATCH;
vart.pdispVal = Mousepnt;
sty.vt = VT_DISPATCH;
sty.pdispVal = style;
//好像style没有设置下去。??
//m_ctrlMapX.GetLayers().Item("terminal").SetStyle(style);
//m_ctrlMapX.GetLayers().SetInsertionLayer(m_ctrlMapX.GetLayers().Item("terminal"));
ftr = m_ctrlMapX.GetFeatureFactory().CreateSymbol(vart,sty);
//ftr.SetStyle(m_ctrlMapX.GetDefaultStyle());
//ftr.GetStyle().SetSymbolBitmapColor(RGB(255,0,0));
m_ctrlMapX.GetLayers().Item("terminal").AddFeature(ftr);
//刷新。 RGB(255,140,0)
m_ctrlMapX.SetRedraw(TRUE);
m_ctrlMapX.Refresh();
}
catch (COleDispatchException *e)
{
e->ReportError(MB_OK);
e->Delete();
}
catch (COleException *e)
{
e->ReportError();
e->Delete();
}