首页 / 浏览问题 / 移动GIS / 问题详情
android 能否调用 geoserver发布的WMS服务
13EXP 2020年07月09日

使用产品:SuperMap iMobile Lite 10i 操作系统:ubuntu16

var dinfo = DatasourceConnectionInfo()
    dinfo.setServer("http://192.168.1.129:8080/geoserver/wms")
    dinfo.setEngineType(EngineType.OGC)
    dinfo.setDriver("WMS")
    dinfo.setAlias("song")
    dinfo.setWebVersion("1.1.1")
    dinfo.setWebFormat("format");
    dinfo.setWebVisibleLayers("songjian:song");
    dinfo.setWebCoordinate("EPSG:4326")
    val rect = Rectangle2D(73.441277,18.159829,135.08693,53.561771)
    dinfo.setWebBBox(rect)
    println(m_workSpace.datasources);
    var dataSource : Datasource = m_workSpace.datasources.open(dinfo)
    m_mapView = findViewById(R.id.Map_view)
    m_mapControl = m_mapView!!.getMapControl()
    m_mapControl!!.getMap().getLayers().add(dataSource.getDatasets().get(0),true)

这段代码运行报错

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sj.geoserverdemo/com.sj.geoserverdemo.MainActivity}: java.lang.IllegalStateException: m_workSpace.datasources.open(dinfo) must not be null

2 个回答

您好,发布的是基于OGC标准的WMS服务。iMobile Lite是可以正常加载的,代码里面不要通过打开数据源的方式加载,打开数据源是iMobile for Android的方式。您那边是否有iDesktop桌面软件,可以在桌面软件中利用打开Web型数据源打开wms服务,看一下桌面是否能正常打开
9,137EXP 2020年07月09日
麻烦再问一下,addLayer这个方法是在哪个jar包里呢。我这里加载不出这个方法,想用这个
您那边把产品目录的com.supermap.imobilelite_v1001.jar和armeabi的so库引用到工程中,建议您那边把所有的jar包和so库都添加到工程中使用。不要和iMobile for Android混用了,iMobile Lite是没有打开数据源的方式来加载数据的。
您好,这些jar包和so库都添加进去了,可还是用不了addLayer。。。
用不了是什么意思?是找不到这个方法吗?你看一下你引用的MapView是不是iMobile Lite包里面的
已经解决了,感谢您解答
您好,你在超图手机端,可以加载geoserver上发布的wms地图是吗?我现在也遇到这个问题,请你是怎么解决的呢
89EXP 2021年04月22日
...