MapX如何在图层上添加一个点的代码实例

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();
}