在MAPX中如何移动 图元(即部件) 的位置
这是移动图元的代码
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);
****************************************
问题:
图元只闪烁但是不移动。不知道到底是为什么?
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);
****************************************
问题:
图元只闪烁但是不移动。不知道到底是为什么?
...全文
相关推荐
在MapX中实现点图元的位置移动和大小调整功能
首先,我们要理解MapX中的点图元(Point Element)是地图上表示特定地理位置的基本元素。MapX提供了一套API,允许开发者创建、修改和管理这些图元。
mapx添加图元速度测试
标题“mapx添加图元速度测试”涉及到MapX库在地图操作中的性能表现,特别是针对图元(要素)的添加速度。
mapx开发文档
- 当鼠标按下时,根据顶点的响应区域判断是否选中了某个顶点;当鼠标移动时,相应地调整选中顶点的位置;当鼠标释放时,更新多边形的顶点坐标。
delphi+mapx做的gis(放大、缩小、注册、添加站点、移动).rar
**移动**:这通常指的是地图的平移操作,即用户可以在不改变地图比例尺的情况下,将地图视图移动到不同的位置。MapX提供了平移函数,用户可以通过鼠标拖动地图或使用导航控件来实现。
MapX相关功能实现 C++源码
**归心(Centering)**:归心是指将地图的视图中心移动到特定位置,这在用户需要快速定位某个位置时非常有用。源码可能包含一个方法,接收坐标参数,然后调整地图视图使其中心对准该坐标。4.


