Stacking contexts for layers, overlays, and controls

This commit is contained in:
Tim Schaub
2018-11-19 09:47:51 -07:00
parent 5d14666376
commit 898c349fbf
18 changed files with 113 additions and 42 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 136 KiB

View File

@@ -25,5 +25,5 @@ new Map({
render({
message: 'Vector tile layer renders',
tolerance: 0.02
tolerance: 0.01
});

View File

@@ -1,6 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/ol/ol.css" type="text/css">
<style>
html, body {
margin: 0;
@@ -15,6 +16,9 @@
.bw {
filter: grayscale(100%);
}
.ol-control {
display: none;
}
</style>
</head>
<body>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@@ -67,4 +67,4 @@ new Map({
})
});
render({tolerance: 0.02});
render({tolerance: 0.01});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB

View File

@@ -1,22 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<style>
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
#map {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script src="main.js"></script>
</body>
</script>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 B

View File

@@ -0,0 +1,82 @@
/**
* Demonstrate stacking with z-index. Layers and controls
* can be ordered with z-index, but controls always appear
* above layers.
*/
import Map from '../../../src/ol/Map.js';
import View from '../../../src/ol/View.js';
import Layer from '../../../src/ol/layer/Layer.js';
import Control from '../../../src/ol/control/Control.js';
import SourceState from '../../../src/ol/source/State.js';
class Element extends Layer {
constructor(options, style) {
super(options);
const element = document.createElement('div');
element.style.position = 'absolute';
Object.assign(element.style, style);
this.element = element;
}
getSourceState() {
return SourceState.READY;
}
render() {
return this.element;
}
}
// elements for stacked controls
const element1 = document.createElement('div');
const style1 = element1.style;
style1.position = 'absolute';
style1.background = 'blue';
style1.width = '25%';
style1.height = '50%';
style1.zIndex = '1';
const element2 = document.createElement('div');
const style2 = element2.style;
style2.position = 'absolute';
style2.background = 'orange';
style2.width = '75%';
style2.height = '25%';
style2.zIndex = '-1';
new Map({
target: 'map',
layers: [
new Element({
zIndex: 200
}, {
background: 'red',
width: '50%',
height: '100%'
}),
new Element({
zIndex: -200
}, {
background: 'green',
width: '100%',
height: '50%'
})
],
controls: [
new Control({
element: element1
}),
new Control({
element: element2
})
],
view: new View({
center: [0, 0],
zoom: 0
})
});
render();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@@ -120,4 +120,4 @@ new Map({
})
});
render({tolerance: 0.05});
render({tolerance: 0.02});