ズーム・レベルでコロプレスレイヤーを更新
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.14.1/mapbox-gl.css" rel="stylesheet"><script src="https://api.mapbox.com/mapbox-gl-js/v2.14.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>