首页 / 浏览问题 / 组件GIS / 问题详情
如何在iobject c++加载isever发布的地图服务
2EXP 2020年06月17日

使用产品:iobjectscpp-10.0.1   操作系统:win7 x64      开发工具:vs2012
数据类型: 服务
问题详细描述:帮助文档\help\help.html   知识库》如何打开新的地图》打开iServer发布的地图,给了一个如何打开本地服务,因没有本地服务,用了http://support.supermap.com.cn:8090/iserver/services/map-china400/rest/maps,试了没有反应,是服务不能用还是代码问题?


问题重现步骤: 

1、按照help.html文档创建gettingStarted工程,打开本地数据源,可以正常显示,代码如下:

void GettingStarted::openMap()
{
UGMap* pMap = m_pMap;
//获取要打开的工作空间文件路径  
QString qStrPath = QFileDialog::getOpenFileName(this, QString::fromUtf8("OpenWorkSpace"), "F:\\SuperMap_iObjects_CPP\\sample\\data", tr("smwu(*.smwu)"));
//打开指定的工作空间 
if(m_pWorkspace->Open(Translator::QStr2UGStr(qStrPath))) 
    { 
NULL;
    } 
    else 
    { 
        QMessageBox::critical(this,"ERROR",QString::fromUtf8("工作空间打开失败!")); 
        return; 
    } 
if(!m_pWorkspace->m_MapStorages.GetCount()) 
    { 
        QMessageBox::critical(this,"ERROR",QString::fromUtf8("工作空间不包含地图!")); 
        return; 
    }
//获取工作空间中第一幅地图的地图名称 
    UGString mapName = m_pWorkspace->m_MapStorages.GetNameAt(0); 
    //打开地图 
    if (!pMap->Open(mapName)) 
    { 
        QMessageBox::critical(this,"ERROR",QString::fromUtf8("打开地图失败!")); 
        return; 
    } 
    //刷新地图窗口 
    qMapControl->Refresh();
}

2、打开服务,没有反应,也没有报错,代码如下:

void GettingStarted::openWebData()
{
UGDataSource* pDataSourc = NULL;
//指定一个数据源
UGString dataSourceName = _U("imagehttp://support.supermap.com.cn:8090/iserver/services/map-china400/rest/maps/China");

//要给载入的数据源拟定一个别名
UGString aliasName = _U("China");
pDataSourc = m_pWorkspace->OpenDataSource(dataSourceName, aliasName, UGEngineType::Rest);
if(pDataSourc == NULL)
{
QMessageBox::critical(this,"ERROR",QString::fromUtf8("打开web数据源失败!")); 
        return; 
}
//取出第一个dataSet
UGDataset *dataset = pDataSourc->GetDataset(0);
// 判断数据有效性
if(dataset == NULL)
{
QMessageBox::critical(this,"ERROR",QString::fromUtf8("打开web数据源无效!")); 
        return; 
}
//获取到用于显示的MapEditorWnd中的map
UGMap* pMap = m_pMap;

// 将Dataset添加到地图中
UGLayer* pLayer = pMap->m_Layers.AddDataset(dataset, dataset->GetType());
//刷新地图窗口 
    qMapControl->Refresh();
return;
}

3、下面是OpenDataSource断点

问题关闭原因: 1楼方法有效,已解决。

1个回答

代码如下:

UGDsConnection dcon;
    UGString dataSourceName = _U("http://support.supermap.com.cn:8090/iserver/services/map-china400/rest/maps/China");

    dcon.m_nType = UGEngineType::Rest;
    dcon.m_strAlias = _U("China");
    dcon.m_strServer = dataSourceName;
    
    UGDataSource* pDataSourc = m_pWorkspace->OpenDataSource(dcon);
4,620EXP 2020年06月18日

方法有效,可以,感谢!

...