ArcGIS for Android 100.3.0(19):WmsLayer

这里写图片描述

代表开放地理空间联盟(OGC)Web地图服务(WMS)层。
该服务可以在ArcGIS Online上的云中,第三方服务器上或ArcGIS Server上内部托管。

构造方法:
这里写图片描述
预先知道感兴趣层的名称时创建WMS图层的示例:

 private MapView mMapView;

    private String wms_layer_url = "https://certmapper.cr.usgs.gov/arcgis/services/geology/africa/MapServer/WMSServer?request=GetCapabilities&service=WMS";

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

        mMapView = findViewById(R.id.mapView);
        ArcGISMap map = new ArcGISMap(Basemap.Type.IMAGERY, 2.0, 18.0, 3);
        mMapView.setMap(map);

        // 保存一个用于显示的唯一标识WMS层名称的列表
        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服务检索感兴趣的图层时创建WMS图层的示例:

 private MapView mMapView;

    private String wmts_url = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/WorldTimeZones/MapServer/WMTS";

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

        mMapView = findViewById(R.id.mapView);
        ArcGISMap map = new ArcGISMap();
        mMapView.setMap(map);

        // create wmts service from url string
        WmtsService wmtsService = new WmtsService(wmts_url);
        wmtsService.addDoneLoadingListener(() -> {
            if (wmtsService.getLoadStatus() == LoadStatus.LOADED) {
                // get service info
                WmtsServiceInfo wmtsServiceInfo = wmtsService.getServiceInfo();
                // get the first layer id
                List<WmtsLayerInfo> layerInfoList = wmtsServiceInfo.getLayerInfos();
                // create WMTS layer from layer info
                WmtsLayer wmtsLayer = new WmtsLayer(layerInfoList.get(0));
                // set the basemap of the map with WMTS layer
                map.setBasemap(new Basemap(wmtsLayer));
            } else {
                String error = "Error loading WMTS Service: " + wmtsService.getLoadError();
                Log.e("xyh", error);
                Toast.makeText(this, error, Toast.LENGTH_LONG).show();
            }
        });
        wmtsService.loadAsync();
    }

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

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

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

这里写图片描述

设置WmsLayer的样式

  private static final String TAG = MainActivity.class.getSimpleName();

    private MapView mMapView;

    private String wms_layer_url_minnesota = "<![CDATA[http://geoint.lmic.state.mn.us/cgi-bin/wms?VERSION=1.3.0&SERVICE=WMS&REQUEST=GetCapabilities]]>";

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

        mMapView = findViewById(R.id.mapView);
        ArcGISMap map = new ArcGISMap(Basemap.createImagery());
        mMapView.setMap(map);

        // create a WMS layer
        List<String> wmsLayerNames = Collections.singletonList("fsa2017");
        WmsLayer wmsLayer = new WmsLayer(wms_layer_url_minnesota, wmsLayerNames);
        wmsLayer.loadAsync();
        wmsLayer.addDoneLoadingListener(() -> {
            if (wmsLayer.getLoadStatus() == LoadStatus.LOADED) {
                // add the layer to the map
                map.getOperationalLayers().add(wmsLayer);

                // zoom to the layer on the map
                mMapView.setViewpoint(new Viewpoint(wmsLayer.getFullExtent()));

                // get styles
                List<String> styles = wmsLayer.getSublayers().get(0).getSublayerInfo().getStyles();

                // set the style when the button is toggled
                ToggleButton toggle = findViewById(R.id.toggleStyleButton);
                toggle.setOnCheckedChangeListener((buttonView, isChecked) -> {
                    if (isChecked) {
                        // set the sublayer's current style
                        wmsLayer.getSublayers().get(0).setCurrentStyle(styles.get(1));
                    } else {
                        //[DocRef: Name=Set WMS Layer Style, Category=Fundamentals, Topic=Symbols and Renderers]
                        // set the sublayer's current style
                        wmsLayer.getSublayers().get(0).setCurrentStyle(styles.get(0));
                        //[DocRef: END]
                    }
                });
            } else {
                String error = "Failed to load WMS layer: " + wmsLayer.getLoadError().getMessage();
                Log.e(TAG, error);
                Toast.makeText(this, error, Toast.LENGTH_LONG).show();
            }
        });
    }

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

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

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMapView.dispose();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值