首页 / 浏览问题 / 移动GIS / 问题详情
imobile使用天地图底图+超图数据图层时无法正常显示
31EXP 2021年05月27日

imobile10i 单独加载天地图做底图可正常显示,单独加载由超图发布的数据图层也可以正常显示,两者同时加载时数据图层就不显示了

这是加载天地图的代码:

info = new DatasourceConnectionInfo();
      info.setServer("http://t3.tianditu.com/vec_c/wmts?tk=xxxxxxx");
      info.setEngineType(EngineType.OGC);
      info.setDriver("WMTS");
      info.setAlias(alias);

      ds = workSpace.getDatasources().open(info);
      if (ds != null) {
         Dataset dss = ds.getDatasets().get(0);
         mapControl.getMap().getLayers().add(dss, false);
         mapControl.getMap().refresh();

      }

以下是加载超图数据图层的代码:

info = new DatasourceConnectionInfo();
info.setServer(ConfigLoader.url_map + layerName);
info.setEngineType(EngineType.Rest);
info.setAlias(layerName);

ds = workSpace.getDatasources().open(info);
if (ds != null) {
   Dataset dss = ds.getDatasets().get(0);
   mapControl.getMap().getLayers().add(dss, false);

   mapControl.getMap().refresh();
}

1个回答

您好,请问一下加载的数据的坐标系是否一致呢?如果不一致建议修改为一致再做叠加显示
9,127EXP 2021年05月27日
坐标系应该是一致的,web端可以正常显示

你可以在桌面加载同样的地址看下能否正常叠加,如果需要加载两个数据集,就实例化两个

DatasourceConnectionInfo分别打开两个数据源,然后通过layers.add()方法添加两个数据到地图中就行。

idesk里面试过是可以正常叠加的,可是IMOBILE里始终出不来啊。。。

按您说的实例化了2个也不行呢

bminfo = new DatasourceConnectionInfo();
bminfo.setServer("http://t3.tianditu.com/vec_c/wmts?tk=XXXXXX&layer=vec&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}");
bminfo.setEngineType(EngineType.OGC);
bminfo.setDriver("WMTS");
bminfo.setAlias("1111");

bmds = workSpace.getDatasources().open(bminfo);
if (bmds != null) {
   Dataset dss = bmds.getDatasets().get(0);
   mapControl.getMap().getLayers().add(dss, false);
   mapControl.getMap().refresh();
}


dlinfo = new DatasourceConnectionInfo();
dlinfo.setServer(XXXXXXX);
dlinfo.setEngineType(EngineType.Rest);
dlinfo.setAlias("222");

dlds = workSpace.getDatasources().open(dlinfo);
if (dlds != null) {
   Dataset dss = dlds.getDatasets().get(0);
   mapControl.getMap().getLayers().add(dss, true);
   mapControl.getMap().refresh();
}
您那边先确定两个数据源都已经正常打开成功了?然后在桌面看下坐标系是不是一致的。如果服务是公网的可以将服务私聊我,我这边验证一下
服务地址已私信您,谢谢!

验证可以显示的哈,您那边不显示应该是你的iserver数据设置了比例尺隐藏的,您在代码里面加一句:直接全幅显示iserver的图层就可以了

m_mapcontrol.getMap().setViewBounds(layer.getDataset().getBounds());
...