全てのドキュメントMapbox GL JSズーム・レベルでコロプレスレイヤーを更新

ズーム・レベルでコロプレスレイヤーを更新

2014 年の国勢調査データを使用して、ズームレベルに従い州または郡の人口を表示します。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ズーム・レベルでコロプレスレイヤーを更新</title>
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
<link href="https://api.mapbox.com/mapbox-gl-js/v2.6.1/mapbox-gl.css" rel="stylesheet">
<script src="https://api.mapbox.com/mapbox-gl-js/v2.6.1/mapbox-gl.js"></script>
<style>
body { margin: 0; padding: 0; }
#map { position: absolute; top: 0; bottom: 0; width: 100%; }
</style>
</head>
<body>
<style>
.legend {
background-color: #fff;
border-radius: 3px;
bottom: 30px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
font: 12px/20px 'Helvetica Neue', Arial, Helvetica, sans-serif;
padding: 10px;
position: absolute;
right: 10px;
z-index: 1;
}
.legend h4 {
margin: 0 0 10px;
}
.legend div span {
border-radius: 50%;
display: inline-block;
height: 10px;
margin-right: 5px;
width: 10px;
}
</style>
<div id="map"></div>
<div id="state-legend" class="legend">
<h4>Population</h4>
<div><span style="background-color: #723122"></span>25,000,000</div>
<div><span style="background-color: #8b4225"></span>10,000,000</div>
<div><span style="background-color: #a25626"></span>7,500,000</div>
<div><span style="background-color: #b86b25"></span>5,000,000</div>
<div><span style="background-color: #ca8323"></span>2,500,000</div>
<div><span style="background-color: #da9c20"></span>1,000,000</div>
<div><span style="background-color: #e6b71e"></span>750,000</div>
<div><span style="background-color: #eed322"></span>500,000</div>
<div><span style="background-color: #f2f12d"></span>0</div>
</div>
<div id="county-legend" class="legend" style="display: none">
<h4>Population</h4>
<div><span style="background-color: #723122"></span>1,000,000</div>
<div><span style="background-color: #8b4225"></span>500,000</div>
<div><span style="background-color: #a25626"></span>100,000</div>
<div><span style="background-color: #b86b25"></span>50,000</div>
<div><span style="background-color: #ca8323"></span>10,000</div>
<div><span style="background-color: #da9c20"></span>5,000</div>
<div><span style="background-color: #e6b71e"></span>1,000</div>
<div><span style="background-color: #eed322"></span>100</div>
<div><span style="background-color: #f2f12d"></span>0</div>
</div>
<script>
// TO MAKE THE MAP APPEAR YOU MUST
// ADD YOUR ACCESS TOKEN FROM
// https://account.mapbox.com
mapboxgl.accessToken = 'YOUR_MAPBOX_ACCESS_TOKEN';
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/light-v10',
center: [-98, 38.88],
minZoom: 3,
zoom: 3
});
const zoomThreshold = 4;
map.on('load', () => {
// Add a custom vector tileset source. The tileset used in
// this example contains a feature for every state and
// county in the U.S.
// Each state contains four properties. For example:
// {
// isState: true,
// name: "Wyoming",
// population: 584153,
// state: 56
// }
// Each county contains four properties. For example:
// {
// county: 16049,
// isCounty: true,
// name: "Idaho County",
// population: 16315
// }
map.addSource('population', {
'type': 'vector',
'url': 'mapbox://mapbox.660ui7x6'
});
map.addLayer(
{
'id': 'state-population',
'source': 'population',
'source-layer': 'state_county_population_2014_cen',
'maxzoom': zoomThreshold,
'type': 'fill',
// only include features for which the "isState"
// property is "true"
'filter': ['==', 'isState', true],
'paint': {
'fill-color': [
'interpolate',
['linear'],
['get', 'population'],
0,
'#F2F12D',
500000,
'#EED322',
750000,
'#E6B71E',
1000000,
'#DA9C20',
2500000,
'#CA8323',
5000000,
'#B86B25',
7500000,
'#A25626',
10000000,
'#8B4225',
25000000,
'#723122'
],
'fill-opacity': 0.75
}
},
'waterway-label'
);
map.addLayer(
{
'id': 'county-population',
'source': 'population',
'source-layer': 'state_county_population_2014_cen',
'minzoom': zoomThreshold,
'type': 'fill',
// only include features for which the "isCounty"
// property is "true"
'filter': ['==', 'isCounty', true],
'paint': {
'fill-color': [
'interpolate',
['linear'],
['get', 'population'],
0,
'#F2F12D',
100,
'#EED322',
1000,
'#E6B71E',
5000,
'#DA9C20',
10000,
'#CA8323',
50000,
'#B86B25',
100000,
'#A25626',
500000,
'#8B4225',
1000000,
'#723122'
],
'fill-opacity': 0.75
}
},
'waterway-label'
);
});
const stateLegendEl = document.getElementById('state-legend');
const countyLegendEl = document.getElementById('county-legend');
map.on('zoom', () => {
if (map.getZoom() > zoomThreshold) {
stateLegendEl.style.display = 'none';
countyLegendEl.style.display = 'block';
} else {
stateLegendEl.style.display = 'block';
countyLegendEl.style.display = 'none';
}
});
</script>
</body>
</html>