cmapx 保存绘制好的图层

研究了两天,如何保存一绘制好的图层,大致意思都说要使用mapInfo表,然后确定了可定和.TAB表有关。然而网上说的全是垃圾,也不能说全是垃圾,好歹我从中得到了一点点有用的信息,使用mapManager通过加载表文件(.tab)保存图层。这样很麻烦,因为我知道肯定有很为简单的方法。就是今天突然看到的。

image

此方法可以直接将绘制好的图层保存为GST文件。然后等待的就直接加载该文件就可以显示了。但是问题又来了,调试的时候出现了1011错误(查看指导说明发现是:image),然后查看调试信息说无法打开.tab文件或者不存在此文件。然后我把生成的mapInfo表移到该路径下,显示成功。

注意:要对MapInfo表文件是否存在的判断,如果已存在直接加载GST文件即可,否则会出现程序崩溃的现象。代码Demo如下:

pWidget_0 = new QAxWidget(this);

    pWidget_0->setControl(QString::fromUtf8("{87C293C8-44B3-49A4-8EE8-EA6DFC572DED}"));
    pWidget_0->move(20,30);
    pWidget_0->resize(300,200);
    map = new CMapX(pWidget_0->asVariant().value<IDispatch*>());
    map->SetCurrentTool(miPanTool);
    map->SetMousewheelSupport(miMousewheelNoAutoScroll);
    QFile file("C:/Users/SHRD/Documents/SaveLayer/Point.tab");
    if(file.exists())
        map->SetGeoset("C:/SaveLayer/Point.gst");
    else{
        pLayer = map->Layers()->CreateLayer("Point","C:/SaveLayer/Point.tab");
        pFreatue = map->FeatureFactory()->CreateSymbol();
        pPoint = pFreatue->Point();
        pPoint->Set(120.07372, 29.35792);
        pLayer->AddFeature(pFreatue->asVariant().value<IDispatch*>());
        map->SaveMapAsGeoset("Point","C:/SaveLayer/Point.gst");
    }
    map->ZoomTo(30,120.07372, 29.35792);

转载于:https://www.cnblogs.com/first-semon/p/6773211.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值