VC+mapX5.0 在指定经纬度显示车辆图标
http://blog..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();方法添加车辆号 但怎么改变字体大小,和颜色呢 ?? 有其他方法也请告知
