大概是下面这样吧,我随手写的,没检验过,但大致应该是这样的,呵呵,你试试看吧!就是先新建一图层,然后在上面NJI
画线就好了、
CString LayerName = "F://xxx//Land//11//layer.SHP";//路径
//新建图层
CMoDataConnection conn;//declare
conn.CreateDispatch(TEXT("MapObjects2.DataConnection"));//give the value
GetFileDirectory(LayerName);
conn.SetDatabase(GetFileDirectory(LayerName));
if(!conn.Connect())
return;
CMoTableDesc desc;
desc.CreateDispatch(TEXT("MapObjects2.TableDesc"));
设置属性字段
desc.SetFieldCount(3);
desc.SetFieldName(0,"Name");
desc.SetFieldName(1,"Area");
desc.SetFieldName(2,"Perimeter");
desc.SetFieldType(0,moString);
desc.SetFieldType(1,moDouble);
desc.SetFieldType(2,moDouble);
desc.SetFieldLength(0,16);
desc.SetFieldPrecision(1,15);
desc.SetFieldPrecision(2,15);
desc.SetFieldScale(1,3);
desc.SetFieldScale(2,3);
VARIANT v1;
v1.vt = VT_BOOL;
v1.bVal = TRUE;
CMoGeoDataset gds(conn.AddGeoDataset(GetFileTitle(LayerName),moPolygon,desc,v1,v1));
CMoLayers layers(m_map->GetLayers());//获取map控件的图层
CMoMapLayer layer;
layer.CreateDispatch(TEXT("MapObjects2.MapLayer"));
layer.SetGeoDataset(gds);
layers.Add(layer);//把新建图层添加到map控件
m_map->SetExtent(m_map->GetFullExtent());
m_map->Refresh();
/画线
CMoLine line;
CMoPoint pt;
pt.CreateDispatch(TEXT("MapObjects2.Point"));
CMoPoints pts;
pts.CreateDispatch(TEXT("MapObjects2.Points"));
pt.SetX(100);//点1设置
pt.SetY(100);
pts.Add(pt);
pt.SetX(500);//点2设置
pt.SetY(500);
pts.Add(pt);
CMoParts Parts;
Parts = line.GetParts();
Parts.Add(pts);
m_map->Refresh();//刷新图层
CMoParts Parts;
Parts = line.GetParts();
Parts.Add(pts);
m_map->Refresh();//刷新图层
线没有添加到图层吧