herozhl
路人甲
路人甲
  • 注册日期2006-03-14
  • 发帖数6
  • QQ
  • 铜币130枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2426回复:2

[求助]VC+MAPX创建永久图层

楼主#
更多 发布于:2007-11-30 15:50
<P>我的目的是当用户往地图上加入图层后,用户在这个图层上做的加点,线,标注等能保留下来,由于加入的是栅格图层,不能编辑,所以我想在加入栅格图层的同时,创建一个永久的图层,用来保留用户的点线和标注等,创建新图层的代码如下: <BR>CMapXFields   Flds; <BR>  Flds.CreateDispatch(Flds.GetClsid()); <BR>  <BR>  //Create   the   field   definitions   for   the   new   layer.   For   example: <BR>  //First   field   is   a   string,   second   is   an   integer,   last   is   a   date <BR>/*   Flds.AddStringField("My   String   Column",   50); <BR>      Flds.AddIntegerField("My   Integer   Field"); <BR>      Flds.AddDateField("My   Date   Field");*/     这一段编译报错,说没有这三个函数,于是我用了下面这个函数 <BR>      Flds.Add(COleVariant("IDField"),COleVariant("IDField"),COleVariant((long)miAggregationIndividual),COleVariant((long)miTypeString));   <BR><BR>  <BR>  //Create   a   variant   that   points   to   the   fields   collection   just   created <BR>  VARIANT   vFlds; <BR>  vFlds.vt   =   VT_DISPATCH; <BR>  vFlds.pdispVal   =   Flds.m_lpDispatch; <BR>  <BR>  //Create   a   new   LayerInfo   Object <BR>  CMapXLayerInfo   Linfo; <BR>  Linfo.CreateDispatch(Linfo.GetClsid()); <BR>  <BR>  //Set   the   Layer   Info   type   to   type:   New   Table <BR>  Linfo.SetType(miLayerInfoTypeNewTable); <BR>  <BR>  //Add   the   parameters   for   the   new   table <BR>  Linfo.AddParameter("FileSpec",   COleVariant("MyTab.tab"));   //Tab   file <BR>  Linfo.AddParameter("Name",   COleVariant("MyNewLayer"));   //Layer   name <BR>  Linfo.AddParameter("Fields",   vFlds);   //Fields <BR>  <BR>  //Add   the   new   layer   to   the   map <BR>  m_MapX.GetLayers().Add(Linfo.m_lpDispatch);     //运行到这句就运行不过去,产生异常错误,也没有提示什么错误 <BR><BR>                                                                                                        //查看相关的目录下面只产生了.ID和.MAP文件,没有.TAB等其他文件 <BR>注明:由于我的应用程序主框架是基于单文档的,所以我加MAPX时是加入MAP.H   和MAPX.CPP。另外由于需要,在一个弹出对话框中为了方便画控件我又将mapx以Conponents   and   Contral形式添加到工程。Flds.AddStringField("My   String   Column",   50);这几句出错,我的理解是他调用的是前一种方式下加入的MAPX类里面的函数,我找了在这种方式下FIELDS对象的没有AddStringField这一方法,所以我用了它包含的Flds.Add(...)方法,不知道字段有没有加进去?希望各位大侠帮我分析,谢谢!</P>
喜欢0 评分0
niukangwei
路人甲
路人甲
  • 注册日期2007-11-02
  • 发帖数6
  • QQ
  • 铜币122枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-11-30 20:37
我是用createlayer直接创建了一个图层,每次通过图层控制把它加载进来,然后进行各种点,线标注,最后通过保存按钮把图层保存一下就可以了,不过就是比较麻烦。我还不会标注各种线条呢,会的话告诉我,可以的话直接发到我得邮箱<a href="mailtniukangwei@163.com" target="_blank" >niukangwei@163.com</A>
举报 回复(0) 喜欢(0)     评分
herozhl
路人甲
路人甲
  • 注册日期2006-03-14
  • 发帖数6
  • QQ
  • 铜币130枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2007-12-03 14:10
没有人知道吗?
举报 回复(0) 喜欢(0)     评分
游客

返回顶部