1
+ <!DOCTYPE html>
2
+ < html >
3
+ < head >
4
+ < meta charset ="UTF-8 ">
5
+ < title data-i18n ="resiurces.title_l_echartsEarthquake1 "> </ title >
6
+ < script type ="text/javascript " include ="papaparse,jquery " src ="../js/include-web.js "> </ script >
7
+ </ head >
8
+ < body style =" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0; ">
9
+ < div id ="map " style ="margin:0 auto;width: 100%;height: 100% "> </ div >
10
+ < script type ="text/javascript " include ="echarts " src ="../../dist/include-leaflet.js "> </ script >
11
+ < script type ="text/javascript ">
12
+ var host = window . isLocal ? window . server : "http://support.supermap.com.cn:8090" ;
13
+ var map , url = host + "/iserver/services/map-china400/rest/maps/ChinaDark" ;
14
+ map = L . map ( 'map' , {
15
+ center : [ 32.67 , 109.06 ] ,
16
+ maxZoom : 18 ,
17
+ minZoom :3 ,
18
+ zoom : 4
19
+ } ) ;
20
+ var heatMapLayer ;
21
+ L . supermap . tiledMapLayer ( url ) . addTo ( map ) ;
22
+ addFeature ( ) ;
23
+
24
+ function addFeature ( ) {
25
+ $ . get ( "../data/chinaEarthquake.csv" , function ( response ) {
26
+ var dataObj = Papa . parse ( response , { skipEmptyLines : true , header : true } ) ;
27
+ var data = dataObj . data ;
28
+ //热力图点
29
+ var heatMapPoints = { } ;
30
+ //柱状图的点
31
+ var barPoints = { } ;
32
+ for ( var i = 0 ; i < data . length ; i ++ ) {
33
+ var date = new Date ( data [ i ] . date ) ;
34
+ var month = date . getMonth ( ) + 1 ;
35
+ var year = date . getFullYear ( ) ;
36
+ var point = [ parseFloat ( data [ i ] . X ) , parseFloat ( data [ i ] . Y ) , parseFloat ( data [ i ] . level ) ] ;
37
+ if ( year > 2007 && year < 2018 ) {
38
+
39
+ //构造热力图数据
40
+ if ( ! heatMapPoints [ year ] ) {
41
+ heatMapPoints [ year ] = [ point ] ;
42
+ } else {
43
+ heatMapPoints [ year ] . push ( point ) ;
44
+ }
45
+ //构造柱状图数据
46
+ barPoints [ year ] = barPoints [ year ] ? barPoints [ year ] : { } ;
47
+ if ( ! barPoints [ year ] [ month ] ) {
48
+ barPoints [ year ] [ month ] = 1 ;
49
+ } else {
50
+ ++ barPoints [ year ] [ month ] ;
51
+ }
52
+ }
53
+ }
54
+ var option = {
55
+ baseOption : {
56
+ animationDurationUpdate : 1000 ,
57
+ animationEasingUpdate : 'quinticInOut' ,
58
+ timeline : {
59
+ axisType : 'category' ,
60
+ orient : 'vertical' ,
61
+ autoPlay : true ,
62
+ inverse : true ,
63
+ playInterval : 3000 ,
64
+ left : null ,
65
+ right : 30 ,
66
+ top : 20 ,
67
+ bottom : 40 ,
68
+ width : 55 ,
69
+ height : null ,
70
+ label : {
71
+ normal : { textStyle : { color : '#ddd' } } ,
72
+ emphasis : { textStyle : { color : '#fff' } }
73
+ } ,
74
+ symbol : 'none' ,
75
+ lineStyle : { color : '#fff' } ,
76
+ checkpointStyle : { color : '#bbb' , borderColor : '#777' , borderWidth : 2 } ,
77
+ controlStyle : {
78
+ showNextBtn : false ,
79
+ showPrevBtn : false ,
80
+ normal : { color : '#666' , borderColor : '#666' } ,
81
+ emphasis : { color : '#aaa' , borderColor : '#aaa' }
82
+ } ,
83
+ data : [ '2008' , '2009' , '2010' , '2011' , '2012' , '2013' , '2014' , '2015' , '2016' , '2017' ]
84
+ } ,
85
+ title : {
86
+ subtext : resources . text_echartsEarthquake_sub_title ,
87
+ }
88
+ } ,
89
+ //options的设置
90
+ options : [ ]
91
+ } ;
92
+ for ( var key in heatMapPoints ) {
93
+ var barData = [
94
+ barPoints [ key ] [ 1 ] , barPoints [ key ] [ 2 ] , barPoints [ key ] [ 3 ] ,
95
+ barPoints [ key ] [ 4 ] , barPoints [ key ] [ 5 ] , barPoints [ key ] [ 6 ] , barPoints [ key ] [ 7 ] ,
96
+ barPoints [ key ] [ 8 ] , barPoints [ key ] [ 9 ] , barPoints [ key ] [ 10 ] , barPoints [ key ] [ 11 ] , barPoints [ key ] [ 12 ]
97
+ ] ;
98
+ option . options . push ( {
99
+ //热力图的配置
100
+ title : {
101
+ text : resources . text_l_echartsEarthquake ,
102
+ left : 'center' ,
103
+ top : 30 ,
104
+ textStyle : {
105
+ color : '#fff'
106
+ }
107
+ } ,
108
+ visualMap : {
109
+ show : false ,
110
+ min : 0 ,
111
+ max : 5 ,
112
+ seriesIndex : 0 ,
113
+ calculable : true ,
114
+ inRange : {
115
+ color : [ 'blue' , 'green' , 'yellow' , 'red' ]
116
+ }
117
+ } ,
118
+ grid : {
119
+ left : 50 ,
120
+ bottom : '10%' ,
121
+ width : '30%' ,
122
+ height : '30%' ,
123
+ textStyle : {
124
+ color : "#fff"
125
+ } ,
126
+ } ,
127
+ tooltip : {
128
+ trigger : "item" ,
129
+ textStyle : {
130
+ fontSize : 12
131
+ } ,
132
+ formatter : "{b0}:{c0}"
133
+ } ,
134
+ //bar的x,y坐标
135
+ xAxis : [ {
136
+ data : [ '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '10' , '11' , '12' ] ,
137
+ axisLabel : { color : '#fff' } ,
138
+ axisLine : { lineStyle : { color : "#fff" } } ,
139
+ name : resources . text_l_echartsEarthquake_x_coordinate
140
+ } ] ,
141
+ yAxis : [ {
142
+ type : 'value' ,
143
+ splitLine : { show : false } ,
144
+ axisLabel : { color : '#fff' } ,
145
+ axisLine : { lineStyle : { color : "#fff" } } ,
146
+ name : resources . text_echartsEarthquake_sub_title
147
+ } ] ,
148
+ series : [
149
+ //heatmap
150
+ {
151
+ type : 'heatmap' ,
152
+ coordinateSystem : "leaflet" ,
153
+ data : heatMapPoints [ key ] ,
154
+ pointSize : 10 ,
155
+ blurSize : 15
156
+ } ,
157
+ //bar
158
+ {
159
+ type : 'bar' ,
160
+ label : { show : true ,
161
+ position :'top' ,
162
+ color :'#fff'
163
+ } ,
164
+ itemStyle : {
165
+ normal : {
166
+ color : new echarts . graphic . LinearGradient (
167
+ 0 , 0 , 0 , 1 ,
168
+ [
169
+ { offset : 0 , color : 'red' } ,
170
+ { offset : 0.5 , color : 'yellow' } ,
171
+ { offset : 1 , color : 'red' }
172
+ ]
173
+ ) ,
174
+ barBorderRadius : 15
175
+ } ,
176
+ emphasis : {
177
+ color : new echarts . graphic . LinearGradient (
178
+ 0 , 0 , 0 , 1 ,
179
+ [
180
+ { offset : 0 , color : 'red' } ,
181
+ { offset : 0.7 , color : 'yellow' } ,
182
+ { offset : 1 , color : 'red' }
183
+ ]
184
+ )
185
+ }
186
+ } ,
187
+ barWidth : 20 ,
188
+ barGap : 5 ,
189
+ data : barData
190
+ } ,
191
+ //pie的显示
192
+ {
193
+ type : 'pie' ,
194
+ radius : [ '8%' , '20%' ] ,
195
+ center : [ '10%' , '25%' ] ,
196
+ data : [
197
+ { value : barData [ 0 ] + barData [ 1 ] + barData [ 2 ] , name : resources . text_quarter_1 } ,
198
+ { value : barData [ 3 ] + barData [ 4 ] + barData [ 5 ] , name : resources . text_quarter_2 } ,
199
+ { value : barData [ 6 ] + barData [ 7 ] + barData [ 8 ] , name : resources . text_quarter_3 } ,
200
+ { value : barData [ 9 ] + barData [ 10 ] + barData [ 11 ] , name : resources . text_quarter_4 } ,
201
+ ] . sort ( function ( a , b ) { return a . value - b . value ; } ) ,
202
+ roseType : 'angle' ,
203
+ label : {
204
+ normal : {
205
+ textStyle : {
206
+ color : 'rgba(255, 255, 255, 0.7)'
207
+ }
208
+ }
209
+ } ,
210
+ labelLine : {
211
+ normal : {
212
+ lineStyle : {
213
+ color : 'rgba(255, 255, 255, 0.7)'
214
+ } ,
215
+ smooth : 0.2 ,
216
+ length : 10 ,
217
+ length2 : 20
218
+ }
219
+ } ,
220
+ itemStyle : {
221
+ normal : {
222
+ color : 'orange' ,
223
+ shadowBlur : 200 ,
224
+ shadowColor : 'rgba(0, 0, 0, 0.5)'
225
+ }
226
+ } ,
227
+ animationType : 'scale' ,
228
+ animationEasing : 'elasticOut' ,
229
+ animationDelay : function ( idx ) {
230
+ return Math . random ( ) * 200 ;
231
+ }
232
+ }
233
+ ]
234
+ } )
235
+ }
236
+ heatMapLayer = L . supermap . echartsLayer ( option ) . addTo ( map ) ;
237
+ } ) ;
238
+ }
239
+ </ script >
240
+ </ body >
241
+ </ html >
0 commit comments