首页 / 浏览问题 / 组件GIS / 问题详情
iobject C++ 11i中,到底如何加载天地图影像呢?
26EXP 2023年03月28日

在iobject C++ 11i中,到底如何加载天地图影像呢?

1.以下代码哪里有问题呢,为什么获取的数据源为空(即获取天地图影像失败),密钥在iDesktop是可用的。UGEngineType::MapWorldMaps 已经没有维护,换成UGEngineType::WEB 依旧不行,正确的获取方式是什么,,能给个例子吗?十分感谢!

    UGDsConnection dsCon;
    dsCon.m_strServer = _U("http://t0.tianditu.gov.cn/img_c/wmts?DPI=96&tk=密钥"); 
    dsCon.m_strDriver = _U("WMTS");
    dsCon.m_nType = UGEngineType::WEB;
    UGDataSource* ds_tianditu = m_pWorkspace->OpenDataSource(dsCon);

1个回答

您好,您的代码逻辑是正确的,建议检查是否使用的是 iObjects C++\bin\bin_x64 目录,而不是 bind_x64 目录,bind_x64 目录缺失部分库文件,导致部分功能存在异常。

希望可以帮到您。
2,253EXP 2023年03月28日
你好,使用 iObjects C++\bin\bin_x64目录岂不是不能debug了,会显示找不到SuToolkitd.dll,而该文件是在 bind_x64 目录下的。我使用的是QtCreator。
使用 iObjects C++ \bin\bin_x64 目录也可以正常调试您自己写的代码,和使用 \bin\bind_x64 目录是一样的,\bin\bin_x64 和 \bin\bind_x64 目录下都没有提供 DLL 对应的 PDB 文件,也就是说 2 个目录都无法在调试时进入 SuperMap dll 的内部代码,所以使用起来是没有区别的。

如果使用  \bin\bin_x64 目录的话,同时需要调整 链接器 的 附件库目录指向 \lib\lib_x64 目录,且附件依赖项需要改为 \lib\lib_x64 目录下的 *.lib。

你好,为什么改成 \lib\lib_x64目录后,extensions4Qt目录下translator.h的方法不能用了,我都重新build过了。使用Translator::QStr2UGStr(const QString &qStr)方法时,一旦参数字符串超过12个字节就出现std::_Xlength_error错误,测试如下:

    QString str = "labelDylayer";
    Translator::QStr2UGStr(str);
//以上出现出错

    QString str = "labelDylaye";
    Translator::QStr2UGStr(str);
//删掉一个字节,只剩11个字节,编译通过

您好,我在本地使用 iObjects C++ 11.0.1 组件切换 \lib\lib_x64 目录依赖后测试,并未复现您提到的问题,切换依赖过程中我做了以下操作可供参考:

  1. 在 QtCreator 中重新编译 Extensions4Qt 项目,配置环境变量为 \bin\bin_x64 路径,编译 Release 版本;
  2. 在 VS 中将 链接器》附件库目录改为 \lib\lib_x64 目录和 Extensions4Qt 编译的 release 目录;
  3. 清空解决方案后重新编译再运行。

测试代码如下,无任何异常:

建议根据上述流程检查您的项目配置情况,若仍然抛“ std::_Xlength_error ”异常信息,建议在网上搜索相关C++项目配置情况建议,可能是您的项目在其他地方配置存在出入,如:https://blog.csdn.net/tianyexing2008/article/details/114880980https://cplusplus.com/forum/beginner/268879/

...