m_mapctrl.CreateCustomTool(ADD_MAPICON, miToolTypePoint,CComVariant(2),CComVariant(0),CComVariant(0),CComVariant(0));//, miCrossCursor
void Cmap5testdlgDlg::ToolUsedMap1(short ToolNum, double X1, double Y1, double X2, double Y2, double Distance, BOOL Shift, BOOL Ctrl, BOOL* EnableDefault){ // TODO: 在此处添加消息处理程序代码 if(ToolNum==ADD_MAPICON) { /* 得到特性工厂,由点创建Symbol得到feature->得到style,最后加入到层; */ CMapXPoint point; CMapXFeature feature; COleVariant vtPoint; CMapXLayer layer=m_mapx->GetLayers().Item(1); CMapXFeatureFactory cFactory=m_mapx->GetFeatureFactory(); point.CreateDispatch(point.GetClsid()); point.Set(X1,Y1); vtPoint.vt = VT_DISPATCH; vtPoint.pdispVal = point.m_lpDispatch; vtPoint.pdispVal->AddRef();
feature=cFactory.CreateSymbol(vtPoint); //feature.SetCaption();//设置主键,或标签 //feature.SetKeyValue(); CMapXStyle style=feature.GetStyle(); style.PickSymbol();//弹出对话框 feature.SetStyle(style.m_lpDispatch); layer.SetAutoLabel(true);//自动显示标签或主键 layer.AddFeature(feature);
}
//方法二/*CMapXFeature fea;CMapXStyle sy;CString feakey;
if(!fea.CreateDispatch(fea.GetClsid())) { TRACE0("Failed to Create Feature object"); return;}
if(!sy.CreateDispatch(sy.GetClsid())) {TRACE0("Failed to Create Feature object");return;}
sy.SetSymbolFontHalo(1);sy.GetSymbolFont().SetWeight(12);sy.SetSymbolCharacter(36); //36表示五角星,还有其他图标sy.SetSymbolFontColor(0xff);
//if (feakey != "")//m_mapx->GetLayers().Item("MONLAY").DeleteFeature(feakey);try { fea.Attach(m_mapx->GetDispatch()); fea.SetType(miFeatureTypeSymbol); fea.SetStyle(sy); fea.GetPoint().Set(X1,Y1); feakey = m_mapx->GetLayers().Item(1).AddFeature(fea).GetFeatureKey ();
} catch (COleDispatchException *e) { e->ReportError(); e->Delete(); } catch (COleException *e) { e->ReportError(); e->Delete(); }*/}
