- GIS论坛-GIS空间站 ( http://bbs.gissky.net/Default.asp )
-- 好书大家评 ( http://bbs.gissky.net/ShowForum.asp?forumid=9 )
--- [求助]跪求帮忙! ( http://bbs.gissky.net/ShowPost.asp?id=30824 )


作者:pyhmail
发表时间:2006-7-20 12:02:38

本人刚接触MO,由于手边资料很少,特来此向各位先生请教,还望各位不吝赐教,感谢为盼!

     我现在在做一个有关路灯的管理系统,用的是VC+M02.0,现遇到两个问题:

1)   我想当点击了某个按钮后,让满足条件的路灯同时闪烁,而不是一个一个地循环闪烁:

我的代码如下:

这个路灯层中的元素是点,现在我想当点击了满足某些条件的路灯同时闪烁。

我的代码如下:

 

CMoLayers layers(pView->m_map.GetLayers()); //得到层集合

       CMoMapLayer miscNe(layers.Item(COleVariant(TEXT("MiscNe")))); //得到路灯层

       CMoRecordset recs(miscNe.SearchExpression(expression)); //得到名字满足条件的路灯

      

       CMoPoints pts;

       pts.CreateDispatch(_T("CMapObjects2.Points"));

       CMoPoint pt;

       pt.CreateDispatch(_T("CMapObjects2.Point"));

       i=0;

       recs.MoveFirst();

       while(!recs.GetEof())

       {

              i++;

              if(recs.GetEof())

              {

                     ::MessageBeep(MB_ICONQUESTION);

              }

              else

              {

                     CMoFields fields(recs.GetFields());

                     CMoField shapeField(fields.Item(COleVariant(TEXT("Shape"))));

                     CMoPoint shape(shapeField.Get_Value().pdispVal);

                     pts.Add(shape); //把所有的路灯组成点集

             

              }

              recs.MoveNext();

       }

 

       m_strTreePreItem=m_strTreeCurItem;

       if(i>0)

       {

              pView->m_map.Refresh();

              pView->m_map.FlashShape(pts,2);//让路灯同时闪烁

       }

我的思路是把所有的路灯(点原素)放入一个点集中,然而让该点集闪烁,结果运行不了,老弹出对话框提示“错误的参数”

 

2 

CMoDataConnection dc =new CMoDataConnection();

       dc.CreateDispatch("MapObjects2.DataConnection");

       dc.SetDatabase(TOPO_DATA_DIR); //TOPO_DATA_DIR=F:\NetmasterP2005\topo_data

       if (dc.Connect() == FALSE)

       {

              return FALSE;

       }

       CString dsName = GetDatasetName(); //dsName="CscLink"

       CMoGeoDataset gds= new CMoGeoDataset();

       gds = (dc->FindGeoDataset(dsName));

 

       if (!LPDISPATCH(gds))

       {

              return FALSE;

       }

       // 设置数据集

       m_mlMain.CreateDispatch("MapObjects2.MapLayer");

m_mlMain.SetGeoDataset(gds);  //把图层变量m_mlMain 与数据集gds(CscLink)建立关联

 

在上面的代码中,我让路灯数据集gds与图层变量m_mlMain建立了关联,可以当我发生我用RemoveAt函数删除了图层m_mlMain后,这个关系还是存在(因为当我删除了图层之后,数据集所对应的.DBF文件却不能被删除),请问我应该怎么取消数据集与图层变量的关联?

         以上两个问题,恳请各位先生能在百忙之中抽空解决,不胜感激!



Powered by GIS空间站 © 2002-2007