zoukankan      html  css  js  c++  java
  • 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);
    作者:first_semon
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题,欢迎交流
  • 相关阅读:
    servlet.txt笔记
    用数组实现集合的功能
    用父类声明的变量和用接口声明的变量的区别
    DHTML_____document对象的方法
    DHTML_____window对象的事件
    DHTML_____window对象属性
    DHTML_____window对象方法
    DHTML_____如何编写事件处理程序
    常用点击事件(鼠标、光标、键盘、body)
    鼠标滑动显示不同页面的效果——————获取鼠标相对于整个页面的坐标
  • 原文地址:https://www.cnblogs.com/first-semon/p/6773211.html
Copyright © 2011-2022 走看看