请教大家:关于在vc2005 MFC单文档程序的某个对话框上,使用mapx5.0装载地图后,创建临时图层显示GPS车辆,并提示车辆相关信息的问题

ysysbaobei 2010-12-02 10:51:11
开发环境:VC2005 基于MFC的单文档应用程序,其中某个对话框;
mapx5.0控件;

问题:使用mapx5.0装载地图后,创建临时图层显示GPS车辆,并提示车辆相关信息的问题;
现在已经能够装载地图,并在临时图层上显示GPS定位的车辆图元了,
请问怎么显示车辆的相关信息上去???


首先在对话框头文件里定义:
CMapXFeature ftrCar; // 车辆图元
CMapXFeature ftrCarNow; // AddFeature后的车辆图元
CMapXLayers allLayers; // 所有图层


在.cpp里:
------------------------在初始化函数里:------------------------------------------------------
/*dFenbianlv = 300;*/
dFenbianlv = 2;

RECT windRect;
GetClientRect(&windRect); //取得视图区域

//m_change_gis_control.Create(NULL, WS_VISIBLE, windRect, this, IDC_CHANGE_MAP);
//m_change_gis_control.Create(NULL, WS_VISIBLE, CRect(0, 0, 80, 80), this, IDC_CHANGE_MAP);

m_change_gis_control.Create(NULL, WS_VISIBLE, CRect(windRect.left, windRect.top, windRect.right - 110, windRect.bottom), this, IDC_CHANGE_MAP);

// 笔记本地图路径
this->m_change_gis_control.SetGeoSet(_T("F:\\车辆管理\\08全国地图 1G\\08全国合成图 5000\\08全国合成图\\中国(重庆).gst"));

//106.4986, 29.49303
m_change_gis_control.SetCenterX(106.4986); //设置中心坐标
m_change_gis_control.SetCenterY(29.49303);

m_change_gis_control.SetZoom(dFenbianlv); // 地图分辨率

// 台式地图路径
//this->m_change_gis_control.SetGeoSet(_T("F:\\王平\\GS\\GS上位机\\地图文件\\08全国合成图 3G\\08全国合成图\\中国(重庆).gst"));


m_change_gis_control.GetLayers().CreateLayer(_T("tempLayersForGS"),NULL,1); // 创建临时图层
allLayers=m_change_gis_control.GetLayers();



------------------------------------在显示车辆位置按钮时:---------------------------------------------
/*CMapXFeature ftr=m_change_gis_control.GetFeatureFactory().CreateSymbol();*/

ftrCar=m_change_gis_control.GetFeatureFactory().CreateSymbol();

CMapXStyle style=ftrCar.GetStyle();

style.SetSymbolType(miSymbolTypeBitmap);
style.SetSymbolBitmapName(_T("CAUT1-32.BMP"));
style.SetSymbolBitmapSize(16);
style.SetSymbolBitmapTransparent(FALSE);

ftrCar.SetStyle(style);

ftrCar.GetPoint().Set(106.4986,29.49303);
/*CMapXFeature ftrNow = layers.Item(_T("tempLayersForGS")).AddFeature(ftr);*/
ftrCarNow = allLayers.Item(_T("tempLayersForGS")).AddFeature(ftrCar);

ftrCarNow.GetLayer().SetKeyField(_T("sbh:"));
ftrCarNow.SetKeyValue(_T("1号"));

ftrCarNow.Update();
allLayers.Item(_T("tempLayersForGS")).Refresh();


/*ftrNow.GetLayer().SetKeyField(_T("SIM:"));
ftrNow.SetKeyValue(_T("13800138000"));
ftrNow.Update();*/

/*ftr.GetLayer().SetKeyField(_T("通信分组:"));
ftr.SetKeyValue(_T("通信1组"));
ftr.Update();*/


// 下面为显示提示信息,有问题
//CMapXStyle styleForText;

//ftr.SetKeyValue(_T("BMW 730Li"));

//styleForText.GetTextFont().SetName(_T("宋体"));

//styleForText.GetTextFont().SetName(_T("Arial"));

////styleForText.GetTextFont().SetSize(12);

//styleForText.SetTextFontColor(miColorRed); //颜色

//layers.Item(_T("tempLayersForGS")).SetEditable(true);
//layers.Item(_T("tempLayersForGS")).GetLabelProperties().SetStyle(styleForText);
//layers.Item(_T("tempLayersForGS")).GetLabelProperties().SetPosition(miPositionBC); //标注文本在图元相对位置



---------------------移动车辆图元位置----------------------------------
ftrCarNow.GetPoint().Set(109.4966,31.49333);
ftrCarNow.Update();

allLayers.Item(_T("tempLayersForGS")).Refresh();
...全文
199 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlz66668888 2013-06-24
  • 打赏
  • 举报
回复
看来,楼主的东西比较新潮,别人都不知道啊。
wjl261333916 2011-10-24
  • 打赏
  • 举报
回复
怎么解决的,使用tooltip吗?
ysysbaobei 2010-12-11
  • 打赏
  • 举报
回复
看来没人回帖了,
问题已经解决,结贴了
ysysbaobei 2010-12-02
  • 打赏
  • 举报
回复
大家帮帮忙啊!!!!
ysysbaobei 2010-12-02
  • 打赏
  • 举报
回复
顶上去,大家帮忙看看啊

2,142

社区成员

发帖
与我相关
我的任务
社区描述
它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。
社区管理员
  • 地理信息系统
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧