难醉 2018-12-06 08:04 采纳率: 50%
浏览 1425
已采纳

arcgisruntime for android 调用wms服务,只显示底图,不显示wms服务图层?

我用的编译工具是Android studio,加载的是廊坊四维墨卡托矢量的服务,底图加载的四维的全国地图,底图可以正常显示,戴氏,廊坊的wms服务无法显示。具体代码如下:

public class MainActivity extends AppCompatActivity {

    private MapView mMapView;

    private String wms_layer_url = "http://gis.internet.enn.cn/arcgis/services/LangFang0011_Map_MCT_D/MapServer/WMSServer?request=GetCapabilities&service=WMS";
    //private String wmts_url  = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/WorldTimeZones/MapServer/WMTS";amp;?request=GetCapabilities&service=WMS

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mMapView = (MapView) findViewById(R.id.mapview);

        //瓦片
        String strMapUrl="http://gis.enn.cn:8080/OneMapServer/rest/services/Map_CHINA_T/MapServer";
        ArcGISTiledLayer layerBaseMap = new ArcGISTiledLayer(strMapUrl);

        //设置切片图层作为底图
        Basemap basemap = new Basemap(layerBaseMap);

        Viewpoint vp = new Viewpoint(39.524,116.719,3);
        ArcGISMap map = new ArcGISMap(basemap);
        map.setInitialViewpoint(vp);
        mMapView.setMap(map);

        // 保存一个用于显示的唯一标识WMS层名称的列表2.0,18.0,3
        List<String> wmsLayerNames = new ArrayList<>();
        wmsLayerNames.add("0");

        // create a new WMS layer displaying the specified layers from the service
        WmsLayer wmsLayer = new WmsLayer(wms_layer_url, wmsLayerNames);

        // add the layer to the map
        map.getOperationalLayers().add(wmsLayer);

        wmsLayer.addDoneLoadingListener(new Runnable() {

            @Override
            public void run() {
                if (wmsLayer.getLoadStatus() == LoadStatus.LOADED) {
                    // work with WMS layer here
                }
            }
        });

    }

    @Override
    protected void onPause() {
        super.onPause();
        mMapView.pause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        mMapView.resume();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMapView.dispose();
    }

}

显示如下:
图片说明
我想要在红框位置显示我调用的wms服务,求助大神指点

  • 写回答

2条回答 默认 最新

  • devmiao 2018-12-06 12:54
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 画出的分类图不对,求解答一下
  • ¥20 springboot和springcloud版本问题
  • ¥15 ps2手柄控制树莓派小车
  • ¥30 C#:vsto powerpoint的外接程序
  • ¥30 stata将do文件代码转化为ado文件
  • ¥15 两个同维数组相比,不同位置、出现重复比无意义,而不同位置、不出现重复比,则有意义。把有意义的两个数组放入新的集合MK中。
  • ¥15 可以远程电脑安装nvm
  • ¥15 写一个可直接调用的函数,将32位有符号数转成另一个无符号的数
  • ¥15 CMAKE+VS2019+QT5.15.2组合进行二次编译
  • ¥15 nginx 配置静态html访问 ,后台登录时页面始终被重定向到登录页,无法访问到后台的静态html页