- C/C++ code
//创建点图元 CMapXPoint point; point.Set(m_dMapXX,m_dMapXY); //创建图元样式 CMapXStyle style; style.SetSymbolType(miSymbolTypeBitmap); style.SetSymbolBitmapName(_T("camera.bmp")); //设置MapX不进行自动更新 m_ctrlMapX.SetAutoRedraw(FALSE); //设置图层可写 pLayer->SetEditable(TRUE); //创建特征对象 VARIANT varPoint; VARIANT varStyle; varPoint.vt = VT_DISPATCH; varPoint.pdispVal = point.m_lpDispatch; varStyle.vt = VT_DISPATCH; varStyle.pdispVal = style.m_lpDispatch; CMapXFeatureFactory factory; CMapXFeature feature = factory.CreateSymbol(varPoint,varStyle); //添加到图层 pLayer->AddFeature(feature); pLayer->Refresh(); //设置MapX进行自动更新 m_ctrlMapX.SetAutoRedraw(TRUE); //设置图层不可写 pLayer->SetEditable(FALSE);
这是我照网上的一个例子仿的
执行pLayer->AddFeature(feature);时发生了异常
调试运行的时候,发现point和style两个对象的m_lpDispatch属性都是0
不知道这两个属性是什么意思?
和VARIANT互相转换的时候,是这样做的么?
先谢过了
------解决方案--------------------
设置图层的label字段是你的图层的数据的某个字段。你光指定AutoLabel为TRUE了,没指定显示哪个字段的数据,当然不行了。
自己看看MapX自带的PDF文档,里面有说明。