首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC+MapX添加图元失败,代码运行没有关问题,看不到图元

2012-01-29 
VC+MapX添加图元失败,代码运行没问题,看不到图元我想用一下代码添加一个矩形框,但失败了,添加后看不到图元

VC+MapX添加图元失败,代码运行没问题,看不到图元
我想用一下代码添加一个矩形框,但失败了,添加后看不到图元。
代码如下:
//   x1,   y1,   x2,   y2为在地图中选定的两个点坐标
//   分别作为要绘制矩形框的左下角和右上角两个点
x1   =   20741.798;
x2   =   20739.798;
y1   =   3401.866;
y2   =   3409.866;
pt.Set(x1,   y1);
pts.Add(pt);
pt.Set(x1,   y2);
pts.Add(pt);
pt.Set(x2,   y2);
pts.Add(pt);
pt.Set(x2,   y1);
pts.Add(pt);
sty   =   m_MapXFeature.GetStyle();//   获取Style
lyr   =   m_ctrlMapX.GetLayers().Item( "TEMP1 ");//   获取要添加的图层
DrawRect(lyr,   pts,   sty);//   调用DrawRect函数绘制矩形框

//   DrawRect函数,绘制矩形框
void   DrawRect(CMapXLayer   lyr,   CMapXPoints   pts,   CMapXStyle   sty)
{
try   {
CMapXFeatureFactory   fac;
CMapXFeature   ftr,   ftr2;
COleVariant   vtPts,   vtSty;

fac   =   m_ctrlMapX.GetFeatureFactory();
//   Points   Variant
vtPts.vt   =   VT_DISPATCH;
vtPts.pdispVal   =   pts.m_lpDispatch;
vtPts.pdispVal-> AddRef();
//   Style   Variant
vtSty.vt   =   VT_DISPATCH;
vtSty.pdispVal   =   sty.m_lpDispatch;
vtSty.pdispVal-> AddRef();

ftr   =   fac.CreateRegion(vtPts,   vtSty);
ftr2   =   lyr.AddFeature(ftr);
ftr2.Update();
lyr.Refresh();
}   catch   (COleDispatchException   *e)   {
e-> ReportError();
e-> Delete();
}   catch   (COleException   *e)   {
e-> ReportError();
e-> Delete();
}
}

运行完后打开图层TEMP1的浏览窗口可以看到已经增加了一个图元,但在地图窗口中看不到,显示全图也没有。很奇怪,不知道怎么回事。
不知道哪位高手能否指点一下,或者给一段可用代码,不胜感激!

[解决办法]
老早以前写过这方面的东西。好象记得一个地图可以分很多层,MAPX加载的时候是通过一个图层定义文件来加载的(这个文件的操作MAPX提供专门的工具,也可以在程序中实现)。要显示的图层好象必须在那个图层定义文件里注册过的,不然就不会显示。还有就是缩放比例的问题,每个图层都有缩放比例的阀值,当前地图比例要大于图层的阀值该图层才会显示。

时间太长了都快忘记了,大概就这两个方面的问题。你试试

热点排行