首页 / 浏览问题 / 移动GIS / 问题详情
超图IMOBILE对在线地图服务的支持
34EXP 2019年10月11日
请问imobile加载由iserver发布的底图,控制图层显示以及调用数据服务的完整示例代码在哪里可以找到?找了好久全部是基于离线工作空间的。。。

1个回答

您好,
1.移动端加载iserver发布的地图服务,使用接口DatasourceConnectionInfo,可以参考帮助文档--知识库--服务对接。包括对各种在线地图的加载以及对数据服务的上传、下载和更新。
2.对于图层的操作可以通过地图对象Map来获取地图中的图层集合对象Layers,可以参考产品包中的demo--编辑绘制(MapEdit)
9,232EXP 2019年10月11日

通过这种方式打开在线地图后,如何能继续获取该地图服务下的图层信息?

您好,通过这种方式打开的在线地图,没法再获取地图中的图层信息
现在我通过这种方式加载了一个REST在线地图作为底图,现在需要在底图上面叠加另一个REST在线的设施地图服务,需要如何操作呢?有相关的示例么?
在底图上叠加地图服务:使用相同的方法打开这个数据源,然后通过map.getLayers().add()方法将地图服务添加到地图中。建议您多参考一下帮助文档。
val dataSet = dataSource.datasets.get(0)
superMap!!.layers.add(dataSet, true)

val serverUrl = "http://114.116.69.73:8090/iserver/services/map-china400/rest/maps/China"
var dataConnection = DatasourceConnectionInfo()
dataConnection.engineType = EngineType.Rest
dataConnection.server = serverUrl
dataConnection.alias = "test2"
var dataSource = superMap!!.workspace.datasources.open(dataConnection)
val dataset = dataSource.datasets.get(0)
superMap!!.layers.add(dataset, true)

val count = superMap!!.layers.count
Log.d("layerCount","===$count")
superMap!!.layers.remove(0)

经测试发现这种方式也只能添加一份在线服务、是我的添加方式错误还是其他什么原因呢?

您好,请问一下您那边使用的产品是什么?看代码不是iMobile for Android产品的

这样子应该是获取不到这个地图下的图层信息吧?

打开在线地图是没法获取子图层的哈,地图服务都是以一个图层layer存在的,
你好,我使用的是 supermap-imobile-10.0.0-187-android-zip-chs_(精简绿色包),使用的kotlin语法,与你的代码效果是一样的。该如何叠加使用在线地图服务,是否有可用的demo,在api文档中我只看到了对离线地图的操作,按照离线方式进行在线地图的叠加会直接导致程序异常,在线与离线地图叠加使用了不同的ConnectionInfo。
叠加在线地图的思路如下:
1.分别打开需要叠加的地图服务,使用接口DatasourceConnectionInfo。
2.地图叠加,使用接口:map.getLayers().add(Dataset,boolean)
具体的代码您可以参考帮助文档,您每次打开的地图服务都是以数据源的形式,直接在图层集合中加载数据集即可。需要注意的是叠加的地图坐标系尽量保持一致

经测试发现,在线服务图层可以叠加显示!

还有两问题:

superMap!!.viewEntire() 这个函数调用无效果不能全幅显示不知道是什么原因?

还有就是通过官网提供的文档添加交流群:

移动 GIS 交流群:

群号:294015714

提供 SuperMap iMobile 产品使用交流,需求收集及移动 GIS 技术交流。

两星期都没有通过?

您好,您所说的不能全幅显示是什么意思?是全幅的时候地图超过了手机屏幕显示范围吗?能否截图对比一下。QQ群不是我们这边负责的,所以这个通过申请我们不是很了解哈

你们有交流群吗?

superMap!!.viewEntire() 设置这个不是可以全幅显示吗?设置了之后地图也只显示在设备中间一小块

您好,全幅显示就是在设备的中间将地图显示完全,如果您的地图范围比较广,要全幅显示的话比例尺就比较小,您那边使用全幅显示后要做什么呢?您也可以设置比例尺和中心点来控制地图的显示范围。我们是没有技术交流群的哈。如果有问题可以在我们的技术问答社区上提问http://ask.supermap.com或者拨打我们的技术支持热线:400-8900-866

好的 ,感谢耐心答复!
...