首页 / 浏览问题 / 移动GIS / 问题详情
加载本地数据和天地图
3EXP 2021年03月02日
   DatasourceConnectionInfo dsInfo = new DatasourceConnectionInfo();
        String url2 = "http://t0.tianditu.com/cia_c/wmts?tk=87c70883ade017002d5f2345ff079a3f";
        dsInfo.setServer(url2);
        dsInfo.setAlias("TianDiTu2");
        dsInfo.setEngineType(EngineType.OGC);
        dsInfo.setDriver("WMTS");
        Datasource ds = m_workspace.getDatasources().open(dsInfo);

        DatasourceConnectionInfo dsInfo1 = new DatasourceConnectionInfo();
        dsInfo1.setServer(rootPath+"/SampleData/GeometryInfo/world.smwu");
        Log.i("lvjian","address========>"+rootPath+"/SampleData/GeometryInfo/world.udb");
        dsInfo1.setEngineType(EngineType.UDB);
        Datasource ds1 = m_workspace.getDatasources().open(dsInfo1);

        Datasource datasource = m_workspace.getDatasources().open(wmsInfo);
        if (datasource != null) {
//            m_mapControl.getMap().getLayers().add(datasource.getDatasets().get(0), true);
            m_mapControl.getMap().getLayers().add(ds.getDatasets().get(0), true);
            m_mapControl.getMap().getLayers().add(ds1.getDatasets().get(0),true);
            m_mapControl.getMap().setCenter(new Point2D(117.25, 31.89));
            m_mapControl.getMap().setScale(1 / 12322.6);
            m_mapControl.getMap().refresh();
            m_mapControl.getMap().setVisibleScalesEnabled(true);
        }

1个回答

您好,加载本地数据源和天地图都是通过DatasourceConnectionInfo类打开的,您那边具体是有什么问题呢,麻烦详细说明一下
9,127EXP 2021年03月02日
您好,报错索引越界您可以检查以下几点:
1.调试代码。看工作空间是否打开成功,可以通过workspace.open()方法返回的Boolean变量判断
2.如果工作空间打开成功,可以在iDesktop桌面软件中查看该工作空间中是否有地图存在
 加载测试数据不出图
DatasourceConnectionInfo dsInfo1 = new DatasourceConnectionInfo();
        dsInfo1.setServer(rootPath + "/SampleData/GeometryInfo/Changchun.udb");
        dsInfo1.setEngineType(EngineType.UDB);
        Datasource ds1 = m_workspace.getDatasources().open(dsInfo1);

        Datasource datasource = m_workspace.getDatasources().open(wmsInfo);
        if (ds1 != null) {
//            m_mapControl.getMap().getLayers().add(datasource.getDatasets().get(0), true);
            m_mapControl.getMap().getLayers().add(ds1.getDatasets().get(0), true);
//            m_mapControl.getMap().getLayers().add(ds.getDatasets().get(0), true);
//            m_mapControl.getMap().setCenter(new Point2D(117.25, 31.89));
//            m_mapControl.getMap().setScale(1 / 12322.6);
            m_mapControl.getMap().refresh();
            m_mapControl.getMap().setVisibleScalesEnabled(true);
        }

您那边调试一下代码,看数据源是否打开成功了?
怎么调试?

打断点调试可以百度搜索一下具体方法,参考https://blog.csdn.net/weixin_30556161/article/details/98624749。调试看一下打开数据源返回是否为null

...