Add WMTS capabilities parsing example (see #2637).

git-svn-id: http://svn.openlayers.org/trunk/openlayers@10391 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2010-06-12 18:46:33 +00:00
parent 07ee9991be
commit f42bbd1dfc
2 changed files with 126 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<title>OpenLayers WMTS Capabilities Example</title>
<link rel="stylesheet" href="../theme/default/style.css" type="text/css"/>
<link rel="stylesheet" href="style.css" type="text/css" />
<script src="../lib/Firebug/firebug.js"></script>
<script src="../lib/OpenLayers.js"></script>
<script src="wmts-capabilities.js"></script>
<style>
.olControlAttribution {
bottom: 5px;
}
</style>
</head>
<body onload="init();">
<h1 id="title">Web Map Tile Service (WMTS) Capabilities Parsing</h1>
<p id="shortdesc">
The WMTS Capabilities format allows for parsing of capabilities
documents from OGC Web Map Tile Service (WMTS) version 1.0.0
implementations.
</p>
<div id="map" class="smallmap"></div>
<div id="docs">
<p>
This example creates an OpenLayers.Layer.WMTS layer to based
on the results of parsing a capabilities doc with the
OpenLayers.Format.WMTSCapabilities parser.
</p><p>
See the <a href="wmts-capabilities.js" target="_blank">
wmts-capabilities.js source</a> to see how this is done.
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,88 @@
OpenLayers.ProxyHost = "/proxy/?url=";
var map, format;
function init() {
format = new OpenLayers.Format.WMTSCapabilities();
OpenLayers.Request.GET({
url: "http://v2.suite.opengeo.org/geoserver/gwc/service/wmts",
params: {
SERVICE: "WMTS",
VERSION: "1.0.0",
REQUEST: "GetCapabilities"
},
success: function(request) {
var doc = request.responseXML;
if (!doc || !doc.documentElement) {
doc = request.responseText;
}
var capabilities = format.read(doc);
var layer = createLayer(capabilities, {
layer: "medford:buildings",
matrixSet: "EPSG:900913",
format: "image/png",
opacity: 0.7,
isBaseLayer: false
});
map.addLayer(layer);
},
failure: function() {
alert("Trouble getting capabilities doc");
OpenLayers.Console.error.apply(OpenLayers.Console, arguments);
}
})
map = new OpenLayers.Map({
div: "map",
projection: "EPSG:900913",
units: "m",
maxExtent: new OpenLayers.Bounds(
-20037508.34, -20037508.34, 20037508.34, 20037508.34
),
maxResolution: 156543.0339
});
var osm = new OpenLayers.Layer.OSM();
map.addLayer(osm);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.setCenter(new OpenLayers.LonLat(-13677832, 5213272), 13);
}
function createLayer(capabilities, config) {
var contents = capabilities.contents;
var matrixSet = contents.tileMatrixSets[config.matrixSet];
// find the layer definition with the given identifier
var layers = contents.layers;
var layer;
for (var i=0, ii=layers.length; i<ii; ++i) {
if (layers[i].identifier === config.layer) {
layer = layers[i];
break;
}
}
// get the default style for the layer
var style;
for (var i=0, ii=layer.styles.length; i<ii; ++i) {
style = layer.styles[i];
if (style.isDefault === "true") { // TODO: change this to boolean
break;
}
}
// create the layer
return new OpenLayers.Layer.WMTS(
OpenLayers.Util.applyDefaults(config, {
url: capabilities.operationsMetadata.GetTile.dcp.http.get,
name: layer.title,
style: style,
matrixIds: matrixSet.matrixIds
})
);
}