图层画线

大概是下面这样吧,我随手写的,没检验过,但大致应该是这样的,呵呵,你试试看吧!就是先新建一图层,然后在上面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();//刷新图层

线没有添加到图层吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值