|
阅读:1510回复:3
VC+mo如何在某一层上画线
VC+mo如何在某一层上画线,或是新建一层并在层上画线。
|
|
|
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> |
|
|
2楼#
发布于:2005-09-06 19:54
<P>我用了,程序通过,就是没有线,不知道是为什么?最前一行的路径是什么意思,请告知,非常感谢你的回复。</P>
|
|
|
3楼#
发布于:2005-09-07 21:24
<P>CMoParts Parts;<BR>Parts = line.GetParts();<BR>Parts.Add(pts);<BR>m_map->Refresh();//刷新图层</P>
<P>线没有添加到图层吧</P> |
|