2018-10-23 19:32:42 +08:00
|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<html lang="en">
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
|
|
|
<meta name="geometry" content="diagram">
|
|
|
|
|
<link rel="stylesheet" href="./assets/common.css">
|
2018-10-31 18:01:56 +08:00
|
|
|
|
<link rel="stylesheet" href="./assets/info.css">
|
2018-10-23 19:32:42 +08:00
|
|
|
|
|
|
|
|
|
<title>hexagon demo</title>
|
|
|
|
|
<style>
|
2018-11-03 16:39:22 +08:00
|
|
|
|
body {margin: 0;}
|
2018-10-23 19:32:42 +08:00
|
|
|
|
#map { position:absolute; top:0; bottom:0; width:100%; }
|
|
|
|
|
</style>
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
<div id="map"></div>
|
2018-11-23 09:44:13 +08:00
|
|
|
|
<div id ="info" class ="tooltip" style="display:none"></div>
|
|
|
|
|
<div class='info-panel top-right'>
|
|
|
|
|
<p>
|
|
|
|
|
<label>min</label><input name="minaqi" type="range" step="1" min="0" max="200" value=0> <label>0</label>
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
|
<label>max</label><input name="maxaqi" type="range" step="1" min="0" max="300" value=300><label>300</label>
|
|
|
|
|
</p>
|
|
|
|
|
<p><label>color</label><select>
|
|
|
|
|
<option value ="default">default</option>
|
|
|
|
|
<option value ="blue">blue</option>
|
|
|
|
|
<option value ="red">red</option>
|
|
|
|
|
<option value="orange">orange</option>
|
|
|
|
|
<option value="green">green</option>
|
|
|
|
|
<option value="yellow">yellow</option>
|
|
|
|
|
<option value="purple">purple</option>
|
|
|
|
|
</select> </p>
|
|
|
|
|
<div>
|
|
|
|
|
|
2018-10-23 19:32:42 +08:00
|
|
|
|
<script src="https://webapi.amap.com/maps?v=1.4.8&key=15cd8a57710d40c9b7c0e3cc120f1200&plugin=Map3D"></script>
|
|
|
|
|
<script src="./assets/jquery-3.2.1.min.js"></script>
|
|
|
|
|
<script src="./assets/dat.gui.min.js"></script>
|
|
|
|
|
<script src="../build/L7.js"></script>
|
|
|
|
|
<script>
|
2018-11-03 16:39:22 +08:00
|
|
|
|
const colorObj ={
|
|
|
|
|
blue: ["#E8FCFF", "#CFF6FF", "#98E3FA", "#65CEF7", "#3CB4F0", "#2894E0", "#1A76C7", "#105CB3", "#0D408C", "#002466"],
|
|
|
|
|
red: ["#FFF4F2", "#FFDFDB", "#FAADAA", "#F77472", "#F04850", "#D63147", "#BD223E", "#A81642", "#820C37", "#5C0023"],
|
|
|
|
|
orange:["#FFF7EB", "#FFECD4", "#FAD09D", "#F7B16A", "#F08D41", "#DB6C2C", "#C2491D", "#AD2B11", "#871D0C", "#610800"],
|
|
|
|
|
green:["#FAFFF0", "#EBF7D2", "#C8E695", "#A5D660", "#7DC238", "#59A616", "#3F8C0B", "#237804", "#125200", "#082B00"],
|
|
|
|
|
yellow:["#FFFFE8", "#FFFECC", "#FAF896", "#F7E463", "#F0CE3A", "#DBB125", "#C29117", "#AD7410", "#87500C", "#613000"],
|
2018-11-06 11:27:16 +08:00
|
|
|
|
purple:["#FCF2FF", "#F5DEFF", "#DDB3F2", "#BE7BE3", "#9B4ECF", "#7737B3", "#5B2899", "#411C85", "#270F5E", "#100338"],
|
2018-11-03 16:39:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
2018-10-23 19:32:42 +08:00
|
|
|
|
const scene = new L7.Scene({
|
|
|
|
|
id: 'map',
|
2018-11-23 09:44:13 +08:00
|
|
|
|
mapStyle: 'dark', // 样式URL
|
2018-11-20 20:07:22 +08:00
|
|
|
|
center: [104.838088,34.075889 ],
|
2018-10-23 19:32:42 +08:00
|
|
|
|
pitch: 0,
|
2018-11-20 20:07:22 +08:00
|
|
|
|
zoom: 4.5,
|
2018-10-23 19:32:42 +08:00
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
window.scene = scene;
|
2018-11-03 16:39:22 +08:00
|
|
|
|
scene.on('loaded', () => {
|
2018-11-16 16:52:25 +08:00
|
|
|
|
var colors = ["#FFF5B8","#FFDC7D","#FFAB5C","#F27049","#D42F31","#730D1C"];
|
2018-10-23 19:32:42 +08:00
|
|
|
|
$.getJSON('https://gw.alipayobjects.com/os/rmsportal/JToMOWvicvJOISZFCkEI.json', city => {
|
2018-10-31 18:01:56 +08:00
|
|
|
|
const citylayer = scene.PolygonLayer()
|
2018-10-23 19:32:42 +08:00
|
|
|
|
.source(city)
|
2018-11-16 16:52:25 +08:00
|
|
|
|
//.color('pm2_5_24h',["#FFF5B8","#FFDC7D","#FFAB5C","#F27049","#D42F31","#730D1C"])
|
|
|
|
|
.color('pm2_5_24h',(p)=>{
|
|
|
|
|
if(p>120){
|
|
|
|
|
return colors[5];
|
|
|
|
|
} else if(p>65){
|
|
|
|
|
return colors[4];
|
|
|
|
|
} else if(p>30) {
|
|
|
|
|
return colors[3];
|
|
|
|
|
} else if(p>15){
|
|
|
|
|
return colors[2];
|
|
|
|
|
} else if(p>8){
|
|
|
|
|
return colors[1];
|
|
|
|
|
}else {
|
|
|
|
|
return colors[0];
|
|
|
|
|
}
|
|
|
|
|
})
|
2018-10-23 19:32:42 +08:00
|
|
|
|
.shape('fill')
|
2018-11-16 16:52:25 +08:00
|
|
|
|
.active(true)
|
2018-10-23 19:32:42 +08:00
|
|
|
|
.style({
|
|
|
|
|
opacity: 1
|
|
|
|
|
})
|
|
|
|
|
.render();
|
2019-01-20 20:44:49 +08:00
|
|
|
|
|
2018-11-16 16:52:25 +08:00
|
|
|
|
const citylayer2 = scene.PolygonLayer()
|
|
|
|
|
.source(city)
|
|
|
|
|
.shape('line')
|
|
|
|
|
.color('#fff')
|
|
|
|
|
.style({
|
2019-01-20 20:44:49 +08:00
|
|
|
|
opacity: 1.0
|
2018-11-16 16:52:25 +08:00
|
|
|
|
})
|
2019-01-20 20:44:49 +08:00
|
|
|
|
.render();
|
|
|
|
|
|
2018-11-16 16:52:25 +08:00
|
|
|
|
|
2018-11-03 16:39:22 +08:00
|
|
|
|
citylayer.on('click',(e)=>{
|
|
|
|
|
$("#info").css({'left': e.pixel.x,'top':e.pixel.y, display:'block'});
|
2018-11-16 16:52:25 +08:00
|
|
|
|
$("#info").html(`<p>${e.feature.properties.area || e.feature.properties.name }<span">${e.feature.properties.pm2_5_24h || 0}</span></p>`);
|
2018-10-31 18:01:56 +08:00
|
|
|
|
})
|
2018-11-23 09:44:13 +08:00
|
|
|
|
$('.info-panel input').change(function(){
|
|
|
|
|
$(this).next().text($(this).val());
|
|
|
|
|
const min = $('.info-panel input').val();
|
|
|
|
|
const max = $($('.info-panel input')[1]).val();
|
|
|
|
|
citylayer.filter('pm2_5_24h',(value)=>{
|
|
|
|
|
return (value>=min && value<=max)
|
|
|
|
|
}).render();
|
|
|
|
|
})
|
|
|
|
|
$('.info-panel select').change(function(){
|
|
|
|
|
const color = $(this).val();
|
|
|
|
|
citylayer.color('pm2_5_24h',colorObj[color]).render();
|
|
|
|
|
console.timeEnd('color')
|
|
|
|
|
})
|
2018-10-23 19:32:42 +08:00
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
|