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

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 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同