zcp76
路人甲
路人甲
  • 注册日期2005-06-03
  • 发帖数14
  • QQ
  • 铜币155枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1510回复:3

VC+mo如何在某一层上画线

楼主#
更多 发布于:2005-09-01 16:25
VC+mo如何在某一层上画线,或是新建一层并在层上画线。
喜欢0 评分0
jczxl
路人甲
路人甲
  • 注册日期2005-01-09
  • 发帖数22
  • QQ
  • 铜币177枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-09-04 21:38
<P>大概是下面这样吧,我随手写的,没检验过,但大致应该是这样的,呵呵,你试试看吧!就是先新建一图层,然后在上面NJI</P>
<P>画线就好了、</P>

<P>CString LayerName = "F:\\xxx\\Land\\11\\layer.SHP";//路径</P>
<P>//新建图层</P>
<P>CMoDataConnection conn;//declare<BR>conn.CreateDispatch(TEXT("MapObjects2.DataConnection"));//give the value<BR>GetFileDirectory(LayerName);<BR>conn.SetDatabase(GetFileDirectory(LayerName));<BR>if(!conn.Connect())<BR>return;</P>
<P>CMoTableDesc desc;<BR>desc.CreateDispatch(TEXT("MapObjects2.TableDesc"));</P>
<P>设置属性字段</P>
<P>desc.SetFieldCount(3);</P>
<P>desc.SetFieldName(0,"Name");<BR>desc.SetFieldName(1,"Area");<BR>desc.SetFieldName(2,"Perimeter");</P>
<P>desc.SetFieldType(0,moString);<BR>desc.SetFieldType(1,moDouble);<BR>desc.SetFieldType(2,moDouble);</P>
<P>desc.SetFieldLength(0,16);</P>
<P>desc.SetFieldPrecision(1,15);<BR>desc.SetFieldPrecision(2,15);</P>
<P>desc.SetFieldScale(1,3);<BR>desc.SetFieldScale(2,3);<BR>////////////////////////////////<BR>VARIANT v1;<BR>v1.vt = VT_BOOL;<BR>v1.bVal = TRUE;<BR>CMoGeoDataset gds(conn.AddGeoDataset(GetFileTitle(LayerName),moPolygon,desc,v1,v1));</P>
<P><BR>CMoLayers layers(m_map->GetLayers());//获取map控件的图层<BR>CMoMapLayer layer;<BR>layer.CreateDispatch(TEXT("MapObjects2.MapLayer"));<BR>layer.SetGeoDataset(gds);</P>
<P>layers.Add(layer);//把新建图层添加到map控件<BR>m_map->SetExtent(m_map->GetFullExtent());<BR>m_map->Refresh();</P>

<P>/画线</P>
<P>CMoLine line;<BR>CMoPoint pt;<BR>pt.CreateDispatch(TEXT("MapObjects2.Point"));<BR>CMoPoints pts;<BR>pts.CreateDispatch(TEXT("MapObjects2.Points"));<BR>pt.SetX(100);//点1设置<BR>pt.SetY(100);<BR>pts.Add(pt);</P>
<P>pt.SetX(500);//点2设置<BR>pt.SetY(500);<BR>pts.Add(pt);<BR>CMoParts Parts;<BR>Parts = line.GetParts();<BR>Parts.Add(pts);<BR>m_map->Refresh();//刷新图层<BR></P>
举报 回复(0) 喜欢(0)     评分
zcp76
路人甲
路人甲
  • 注册日期2005-06-03
  • 发帖数14
  • QQ
  • 铜币155枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-09-06 19:54
<P>我用了,程序通过,就是没有线,不知道是为什么?最前一行的路径是什么意思,请告知,非常感谢你的回复。</P>
举报 回复(0) 喜欢(0)     评分
csuhkx
路人甲
路人甲
  • 注册日期2004-05-23
  • 发帖数66
  • QQ
  • 铜币274枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-09-07 21:24
<P>CMoParts Parts;<BR>Parts = line.GetParts();<BR>Parts.Add(pts);<BR>m_map->Refresh();//刷新图层</P>

<P>线没有添加到图层吧</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部