在MAPX中如何移动 图元(即部件) 的位置

allenjiao allenjiao 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是移动图元的代码
double dX=5.0001, dY=5.0005;
CMapXLayer m_Rangelayer = m_ctrlMapX.GetLayers().Item("Stlayer");
CMapXFeatures m_Features = m_Rangelayer.AllFeatures();

m_ctrlMapX.SetAutoRedraw(FALSE);
m_Rangelayer.SetEditable(TRUE);

m_Features.Item(1).Offset(dX, dY);
m_Features.Item(1).Update();

m_ctrlMapX.SetAutoRedraw(TRUE);



这是创建图元的代码(单击鼠标位置创建图元 x y 分别是鼠标坐标)
double m_dMapXX=30,m_dMapXY=30;
float mXk,mYk;
mXk = x; //在屏幕上取得圆形的绘图范围 //如果不转换 由于经纬度之间的差距 并不是一个正圆
mYk = y;
m_ctrlMapX.ConvertCoord( &mXk,&mYk,&m_dMapXX,&m_dMapXY, miScreenToMap );
CMapXLayer pLayer =m_ctrlMapX.GetLayers().Item("Stlayer");
//创建点图元
CMapXPoint point;
point.CreateDispatch(point.GetClsid());
point.Set(m_dMapXX,m_dMapXY);
//创建图元样式
CMapXStyle style;
style.CreateDispatch(style.GetClsid());
style.SetSymbolType(miSymbolTypeBitmap);
style.SetSymbolBitmapSize(15);
style.SetSymbolBitmapName(_T("TRUC1-32.BMP"));


////设置MapX不进行自动更新
m_ctrlMapX.SetAutoRedraw(FALSE);
////设置图层可写
pLayer.SetEditable(TRUE);

//创建特征对象
VARIANT varPoint;
VARIANT varStyle;
varPoint.vt = VT_DISPATCH;
varPoint.pdispVal = point;
varStyle.vt = VT_DISPATCH;
varStyle.pdispVal = style;
CMapXFeatureFactory factory = m_ctrlMapX.GetFeatureFactory();
CMapXFeature feature = factory.CreateSymbol(varPoint,varStyle);
feature.SetKeyValue("car information");

//添加到图层
pLayer.AddFeature(feature);

//pLayer.Refresh();

//设置MapX进行自动更新
m_ctrlMapX.SetAutoRedraw(TRUE);
//设置图层不可写
//pLayer.SetEditable(FALSE);

****************************************
问题:
图元只闪烁但是不移动。不知道到底是为什么?
...全文

相关推荐

评论 12
收藏 已收藏
分享
返回顶部
allenjiao
ATL 3,248 成员 48,530 内容