首页 / 浏览问题 / 移动GIS / 问题详情
android 加载天地图获取数据源为null
30EXP 2021年11月16日
Workspace m_woWorkspace = new Workspace();
// 将地图显示空间和 工作空间关联
MapControl m_mapControl = mapView.getMapControl();
m_mapControl.getMap().setWorkspace(m_woWorkspace);

DatasourceConnectionInfo dsInfo = new DatasourceConnectionInfo();
dsInfo.setServer("http://t0.tianditu.gov.cn/vec_c/wmts?tk=587b02f7d6fb00fe9499441d1c4379fa");
dsInfo.setEngineType(EngineType.OGC);
dsInfo.setAlias("天地图");
dsInfo.setDriver("WMTS");

Datasource ds = m_woWorkspace.getDatasources().open(dsInfo);
if (ds != null) {
    m_mapControl.getMap().getLayers().add(ds.getDatasets().get(0), true);
    m_mapControl.getMap().refresh();
    return true;
}
Log.e(this.getClass().getName(), "打开数据源失败了");
return false;
问题关闭原因: 已解决

1个回答

您好,麻烦确认以下几点:
1.移动端设备是否联网,能够正常访问天地图地址
2.加载天地图的token是否为移动端token
3.使用的iMobile for Android是哪个版本
9,127EXP 2021年11月17日

1.移动端设备可以联网

2.token是android端的token

3.supermap版本是最新的1020

您那边确认一下你们的网络是否被天地图禁止来呢?我这边使用你们的地址和token是可以正常打开天地图的,在打开之前你们可以把设备的缓存都删除/SuperMap/data/WMTS

不是这些问题,我看了你们的demo。

targetSdkVersion和compileSdkVersion版本都是28,我设置为28就行了。

这个sdk的版本对在线第三方地图加载有影响吗?

如果设置的targetsdk为28以上,Android采用的是沙盒机制,每个app有对应的一个存储位置。需要自己去设置这个文件位置来存储许可和缓存数据,如果没有特殊要求都建议使用sdk为28及以下
这个我知道,许可文件我都是放在app包名路径下的目录里,但是targetsdk超过28打开数据源为null,这个是需要设置缓存目录吗?如果是,怎么设置
environment.setWebCacheDirectory(java.lang.String webCache) 你们那边是一定要使用Android10的新特性吗
没有,但是能够支持肯定是最好的
这个主要是由于手机在Android10后改了存储机制导致的。我们一般都是建议用28

好的,谢谢。

我现在有另外的一个问题。

我先加载天地图,后面切换成高德地图,再切换回来天地图的时候提示数据源别名已被占用。

可是我切换在线服务的时候,做了清除的操作了

m_mapControl.getMap().getLayers().clear();

为什么还会提示别买被占用

你这个只是清空了图层,但是数据源还是以那个别名打开的,所以重新打开数据源会出现别名被占用,如果没有关闭数据源建议是直接通过数据源获取数据集添加到图层里面,就不用再打开数据源了

是的,是的,明白意思了。

这次我保存了数据源,每次切换都只清空图层。这样就行了,而且也节省了消耗。

高德地图数据源获取:

DatasourceConnectionInfo dcInfo = new DatasourceConnectionInfo();
dcInfo.setAlias("GaoDeMaps");
dcInfo.setEngineType(EngineType.GaoDeMaps);
gdDatasource = m_woWorkspace.getDatasources().open(dcInfo);

请问一下,高德地图的数据源有没有和天地图一样有矢量注记这个图层呢?

高德地图目前只有那个图层,没有单独的矢量注记图层
没有单独的矢量注记图层,我想的就是用天地图的矢量注记图层和高德的叠加。

就是先添加高德图层,再添加天地图的矢量注记图层,

但是这样好像不行,会报错。

对于这种情况,您这边有什么方法吗?
为啥不直接用天地图的矢量地图呢?高德地图和天地图的坐标系不一致,叠加显示会有偏移的
这个项目要求需要进行地图的切换,需要支持天地图,高德,百度。

天地图本身有矢量标记和影像地图,其他的没有。

所以我在想这个怎么办?不知道您这边有什么建议
目前高德地图只开了矢量和影像,如果上面没有注记的话就没有。高德和天地图的坐标系不一致没法叠加显示的。
好的,麻烦了,谢谢
不同的数据集里面哈。
嗯嗯,好的,谢谢
...