-
Notifications
You must be signed in to change notification settings - Fork 525
/
Copy pathWMTSLayer.xaml.cs
103 lines (85 loc) · 3.9 KB
/
WMTSLayer.xaml.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// Copyright 2022 Esri.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.Ogc;
namespace ArcGIS.Samples.WMTSLayer
{
[ArcGIS.Samples.Shared.Attributes.Sample(
name: "WMTS layer",
category: "Layers",
description: "Display a layer from a Web Map Tile Service.",
instructions: "The layer will be displayed automatically. Use the buttons to choose a different method of loading the layer.",
tags: new[] { "OGC", "layer", "raster", "tiled", "web map tile service" })]
public partial class WMTSLayer : ContentPage
{
public WMTSLayer()
{
InitializeComponent();
_ = LoadWMTSLayer(true);
}
private void UriButton_Click(object sender, EventArgs e)
{
//Load the WMTS layer using Uri method.
_ = LoadWMTSLayer(true);
// Disable and enable the appropriate buttons.
UriButton.IsEnabled = false;
InfoButton.IsEnabled = true;
}
private void InfoButton_Click(object sender, EventArgs e)
{
//Load the WMTS layer using layer info.
_ = LoadWMTSLayer(false);
// Disable and enable the appropriate buttons.
UriButton.IsEnabled = true;
InfoButton.IsEnabled = false;
}
private async Task LoadWMTSLayer(bool uriMode)
{
try
{
// Create a new map.
Map myMap = new Map();
// Get the basemap from the map.
Basemap myBasemap = myMap.Basemap;
// Get the layer collection for the base layers.
LayerCollection myLayerCollection = myBasemap.BaseLayers;
// Create an instance for the WMTS layer.
WmtsLayer myWmtsLayer;
// Define the Uri to the WMTS service.
Uri wmtsUri = new Uri("https://gibs.earthdata.nasa.gov/wmts/epsg4326/best");
if (uriMode)
{
// Create a WMTS layer using a Uri and provide an Id value.
myWmtsLayer = new WmtsLayer(wmtsUri, "SRTM_Color_Index");
}
else
{
// Define a new instance of the WMTS service.
WmtsService myWmtsService = new WmtsService(wmtsUri);
// Load the WMTS service.
await myWmtsService.LoadAsync();
// Get the service information (i.e. metadata) about the WMTS service.
WmtsServiceInfo myWmtsServiceInfo = myWmtsService.ServiceInfo;
// Obtain the read only list of WMTS layer info objects, and select the one with the desired Id value.
WmtsLayerInfo info = myWmtsServiceInfo.LayerInfos.Single(l => l.Id == "SRTM_Color_Index");
// Create a WMTS layer using WMTS layer info.
myWmtsLayer = new WmtsLayer(info);
}
// Add the WMTS layer to the layer collection of the map.
myLayerCollection.Add(myWmtsLayer);
// Assign the map to the MapView.
MyMapView.Map = myMap;
}
catch (Exception ex)
{
await Application.Current.Windows[0].Page.DisplayAlert("Sample error", ex.ToString(), "OK");
}
}
}
}