android 能否调用 geoserver发布的WMS服务

0 投票

使用产品: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

7月 9, 2020 分类:  273次浏览 | 用户: sj972429 (2 分)

2 个回答

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