VC+mapX5.0 在指定经纬度显示车辆图标

VC+mapX5.0开发训练:在指定经纬度显示车辆图标


我正在学习利用vc实现mapx控件的功能,已经能够在vc的程序框架中实现地图显示,并且可以实现了放大、缩小、漫游以及图层控制等功能了。现在的问题是,希望能够在指定的位置(经纬度位置)上显示一个车辆图元!
我编写了一些代码但是却看不到车辆图元,相反显示的是一块32*32的黑色矩形块!

CMapX m_ctrlMapX;
void CStep2View::OnToolTest()
{
CMapXLayers layers = m_ctrlMapX.GetLayers();
CMapXFeature ftr;
try{
if (ftr.CreateDispatch(ftr.GetClsid()))
{
ftr = m_ctrlMapX.GetFeatureFactory().CreateSymbol();
CMapXStyle style = ftr.GetStyle(); //获得图元的风格

//设置图元的风格,显示位图
style.SetSymbolType(miSymbolTypeBitmap);
//指定所要显示位图的存放位置
style.SetSymbolBitmapName("D:\\Program Files\\MapInfo\\MapX 5.0\\CUSTSYMB\\CAR1-32.BMP");
//指定位图大小
style.SetSymbolBitmapSize(32);
//设置为透明
style.SetSymbolBitmapTransparent(TRUE);

//指定需要显示图元的位置(经纬度位置)
ftr.GetPoint().Set(106.580936, 29.561000);
layers.Item("871").AddFeature(ftr);
}
else
{
AfxThrowOleException(CO_E_CLASS_CREATE_FAILED);
}
}

catch (COleDispatchException *e) {
e->ReportError();
e->Delete();
}
catch (COleException *e) {
e->ReportError();
e->Delete();
}
}

那位大虾晓得,在vc中如何利用mapx在指定位置显示特定的位图图元阿???请赐教!多谢!
在线等!!  

呵呵呵,经过一下午的努力问题解决了!!!

应该将style.SetSymbolBitmapName("D:\\Program Files\\MapInfo\\MapX 5.0\\CUSTSYMB\\CAR1-32.BMP")改为style.SetSymbolBitmapName("CAR1-32.BMP")!

开始散分了,大家都来拿分阿!
我来了。。。
顺便问个问题,为什么我在添加中文的时候出错?

CMapXPoint Pnt;
CMapXFeatureFactory FeaFac;
CMapXLayer lyr;
CMapXFeature ftr;
CMapXStyle NewStyle;

Pnt.CreateDispatch(Pnt.GetClsid());
ftr.CreateDispatch(ftr.GetClsid());
NewStyle.CreateDispatch(NewStyle.GetClsid());

lyr = m_ctrlMapX.GetLayers().Item("Customers");
FeaFac = m_ctrlMapX.GetFeatureFactory();
NewStyle.SetSymbolType(miSymbolTypeBitmap);
NewStyle.SetSymbolBitmapSize(24);

NewStyle.SetSymbolBitmapTransparent(TRUE);
NewStyle.SetSymbolBitmapName("STOP1-32.BMP");

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

Pnt.Set(m_dMapX, m_dMapY);

VARIANT vtPoint;
vtPoint.vt = VT_DISPATCH;
vtPoint.pdispVal = Pnt.m_lpDispatch;
VARIANT vtStyle;
vtStyle.vt = VT_DISPATCH;
vtStyle.pdispVal = NewStyle.m_lpDispatch;

lyr.SetAutoLabel(TRUE);
ftr = FeaFac.CreateSymbol(vtPoint, vtStyle);

lyr.SetKeyField("GEONAME");
ftr.SetKeyValue((LPCTSTR)sName);//此处添加label

lyr.AddFeature(ftr.m_lpDispatch);
lyr.Refresh();

// lyr.UpdateFeature(ftr,ftr);


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



你的问题是图标只要在MAPX安装目录下的CUSTSYMB文件夹下,可以直接指定图标的名称。
//
据我所知,MAPX在图元上好象不支持中文LABEL,
如果需要显示中文,好象要用的标注功能,而且标注有个BUG,会随着地图放大缩小进行相应的放大缩小。



///


用MapX开发车辆监控系统添加车辆图标的问题


最近的一个小任务
依据车辆轨迹坐标在地图上添加一个小车的位图并显示车牌号
问题
1 我用添加位图符号的方法(在默认路径下custom中)添加了车辆位图,但我们头想要实现任意路径下的车辆图标添加  有没有解决方法
2 我用cmapxfeature f = mapx1.getfeaturefactory().createtext();方法添加车辆号
但怎么改变字体大小,和颜色呢  ?? 有其他方法也请告知


用MapX开发车辆监控系统添加车辆图标的问题


最近的一个小任务
依据车辆轨迹坐标在地图上添加一个小车的位图并显示车牌号
问题
1 我用添加位图符号的方法(在默认路径下custom中)添加了车辆位图,但我们头想要实现任意路径下的车辆图标添加  有没有解决方法
2 我用cmapxfeature f = mapx1.getfeaturefactory().createtext();方法添加车辆号
但怎么改变字体大小,和颜色呢  ?? 有其他方法也请告知


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值