JSFiddle - React, Tailwind, and code Playground
HTML
<html>
<head>
<script src="https://openlayers.org/en/v4.6.5/build/ol.js"></script>
</head>
<body>
<div id="map" class="fullSize"></div>
</body>
</html>
CSS
@import url(https://openlayers.org/en/v4.6.5/css/ol.css);
.fullSize {
display: block;
position: absolute;
top: 0;
left: 0;
border: none;
width: 100%;
height: 100%;
}
JavaScript 1.7
var parser = new ol.format.WMTSCapabilities();
var apiServer = 'https://api.cesium.com/';
var assetId = 3827; // Washington D.C.
var token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkMTgwZWE3ZS00NjE3LTRjNzUtYTY5Yy00MjBiZTQ3ZTZkMjEiLCJpZCI6MTUzLCJpYXQiOjE0OTYxNTg5MTh9.CCJSSG2vl5EDbEL5pbW6m0XcO5vjzZia462Xr3n3tNY';
var assetUrl;
var assetToken;
async function createMap() {
await requestAssetToken();
var response = await fetch(assetUrl + 'WMTSCapabilities.xml?access_token=' + assetToken);
var text = await response.text();
var result = parser.read(text);
// ion capabilities only support Mercator with a single default layer
var options = ol.source.WMTS.optionsFromCapabilities(result, {
layer: 'default',
matrixSet: 'EPSG:3857'
});
// Set the tile load function to correctly pass the token
options.tileLoadFunction = tileLoadFunction;
var wmtsSource = new ol.source.WMTS(options);
wmtsSource.on('tileloaderror', tileLoadError);
var map = new ol.Map({
layers: [
// Add OSM map
new ol.layer.Tile({
source: new ol.source.OSM(),
opacity: 0.7
}),
// Add Washington D.C. imagery
new ol.layer.Tile({
opacity: 1,
source: wmtsSource
})
],
target: 'map',
// Zooms to Washington D.C.
view: new ol.View({
center: [-8560548.523189582, 4721921.633852956],
zoom: 10
})
});
}
createMap();
//
// Token handling functions
//
// Requests a new asset token
var assetTokenPromise;
function requestAssetToken() {
if (assetTokenPromise) {
// We are already requesting one so just return the existing promise
return assetTokenPromise;
}
assetTokenPromise = window.fetch(apiServer + 'v1/assets/' + assetId + '/endpoint?access_token=' +...