您的位置:首页 > 其它

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

2013-08-14 01:19 435 查看
http://blog.csdn.net/zhihu008/article/details/7777159

我正在学习利用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();方法添加车辆号

但怎么改变字体大小,和颜色呢 ?? 有其他方法也请告知
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: