阅读:1245回复:1
头疼了,各位帮帮忙!VC6+MAPX5开发的一系列问题求解!
<P>以下是我实现地图上显示一个监控目标的函数,通过传入经纬度用一个位图表示一个目标.问题见代码后面:
void CABCView::TargetDisp(double longitude,double latitude) { CMapXLayer layer; layer = m_ctrlMapX.GetLayers().Item(1); CMapXBitmapSymbols bmps; bmps.CreateDispatch(bmps.GetClsid());</P> <P>CMapXStyle sty1 = m_ctrlMapX.GetDefaultStyle().Clone(); sty1.SetSymbolType(miSymbolTypeBitmap); sty1.SetSymbolBitmapName("Car2-32-01.bmp"); // "FIRE1-32.BMP"15 为位图的索引号 sty1.SetSymbolBitmapTransparent(true); // 设置位图的背景为透明 sty1.SetSymbolBitmapSize(18); //create a new variant to pass to the AddFeature method VARIANT s1; s1.vt = VT_DISPATCH; //set up the variant to refer to our style object s1.pdispVal = sty1.m_lpDispatch;</P> <P>CMapXPoint point1;// 坐标点</P> <P>point1.CreateDispatch(point1.GetClsid()); point1.Set(longitude,latitude); //监控目标的经纬度</P> <P>VARIANT p1; p1.vt = VT_DISPATCH; p1.pdispVal = point1.m_lpDispatch;</P> <P>CMapXFeature mfr = layer.AddFeature(m_ctrlMapX.GetFeatureFactory().CreateSymbol(p1, s1));//(point1,sty1) //mfr.SetKeyValue("sdf"); //mfr.Update(); } 问题1:我虽然通过传入经纬度可以显示目标了,可是同样的目标下次来新的位置信息后如何把以前的目标取消并显示新位置的目标,不能通过删除图层的方法实现,因为删除图层地图刷新会闪烁. 问题2:在缩放地图的时候是通过在地图上点左键确定的放大或缩小的,能否在点的过程中得到该点的经纬度和当前的视野. 问题3:在显示目标的时候如何将目标的信息显示在位图符号的下面,比如目标画在地图上了,就能知道目标的ID.我用SETKEYVALUE这个函数了,但是该函数只能显示字母和数字不说还只能在鼠标移动到目标上才显示出来,有其他的方法吗? </P> |
|
1楼#
发布于:2005-05-07 22:20
ding
|
|