15
15
turfLayer , resultLayer , urlWorld ,
16
16
totalLat = 0 , totalLng = 0 , averageLat , averageLng , distance , geo , coordinate ,
17
17
choose , marker1 , marker2 , marker3 , editableLayers , drawControl ,
18
- bearing , baseLayer , result , box ,
18
+ bearing , baseLayer , result , val ,
19
19
radius , steps , point ;
20
20
21
- var map = L . map ( 'map' , {
21
+ var map = L . map ( 'map' , {
22
22
preferCanvas : true ,
23
23
crs : L . CRS . EPSG4326 ,
24
24
center : { lon : 116.383572 , lat : 39.914714 } ,
@@ -93,7 +93,6 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
93
93
return me . _div ;
94
94
} ;
95
95
infoView . addTo ( map ) ;
96
-
97
96
hidePanel ( ) ;
98
97
reset ( ) ;
99
98
}
@@ -113,6 +112,7 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
113
112
} ) ;
114
113
115
114
$ ( '#menuSelect' ) . change ( function ( ) {
115
+ widgets . alert . clearAlert ( ) ;
116
116
117
117
//初始化图层
118
118
removeLayer ( ) ;
@@ -122,13 +122,11 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
122
122
123
123
url = host + "/iserver/services/map-jingjin/rest/maps/京津地区地图" ;
124
124
baseLayer = L . supermap . tiledMapLayer ( url , { prjCoordSys : { "epsgCode" : 4326 } } ) . addTo ( map ) ;
125
-
126
125
//第一个隐藏右侧菜单
127
126
if ( $ ( "#menuSelect" ) . get ( 0 ) . selectedIndex === 0 ) {
128
127
setDefaultCenter ( 39.91 , 116.383572 , 11 ) ;
129
128
hidePanel ( ) ;
130
129
clearControl ( ) ;
131
- $ ( '#msg_container' ) . hide ( ) ;
132
130
133
131
} else {
134
132
choose = $ ( '#menuSelect' ) . children ( 'option:selected' ) . val ( ) ;
@@ -141,17 +139,28 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
141
139
setCenter ( ) ;
142
140
setAlongIcon ( ) ;
143
141
clearControl ( ) ;
144
- $ ( '#msg_container' ) . hide ( ) ;
145
142
$ ( '.input-group:eq(0)' ) . show ( ) ;
146
143
$ ( '.input-group:eq(1)' ) . show ( ) ;
147
144
$ ( '.input-group:eq(2)' ) . hide ( ) ;
148
145
$ ( '.input-group:eq(3)' ) . show ( ) ;
149
146
$ ( '.input-group:eq(1)>span' ) . text ( '请输入距起点距离' ) ;
150
- $ ( '.input-group:eq(1)>input' ) . attr ( 'placeholder' , '全长1174.8米约合0.729英里' ) ;
147
+ $ ( '.input-group:eq(1)>input' ) . attr ( 'placeholder' , '全长1.175千米约合0.73英里' ) ;
148
+
149
+ $ ( '.input-group:eq(1)>input' ) . focusout ( function ( ) {
150
+ val = $ ( '.input-group:eq(1)>input' ) . val ( ) ;
151
+ if ( ( unit === 'kilometers' && val > 1.1753172567467551 ) || ( unit === 'miles' && val > 0.7303085417726581 ) || ( unit === 'degrees' && val > 0.010566564943528475 ) || ( unit === 'radians' && val > 0.00018442134893248942 ) ) {
152
+ widgets . alert . showAlert ( '超出全程距离范围,请重新填写' , false , 260 ) ;
153
+ $ ( '.input-group:eq(1)>input' ) . val ( '' ) ;
154
+ }
155
+ else {
156
+ widgets . alert . clearAlert ( ) ;
157
+ }
158
+ } ) ;
159
+
151
160
$ ( '#calc' ) . val ( '点击生成对应的点' ) ;
152
161
}
153
162
else if ( choose === 'area' ) {
154
- widgets . alert . showAlert ( '选择左侧控件,画出自定义图层,再点右侧按钮进行面积计算' , 1 , 260 ) ;
163
+ widgets . alert . showAlert ( '选择左侧控件,按下鼠标左键, 画出自定义图层,再点右侧按钮进行面积计算' , true , 260 ) ;
155
164
$ ( '.panel-heading>h5' ) . text ( '面积测量' ) ;
156
165
clearControl ( ) ;
157
166
setDefaultCenter ( 39.90455699411283 , 116.407283 , 11 ) ;
@@ -173,7 +182,6 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
173
182
$ ( '.input-group:eq(1)' ) . hide ( ) ;
174
183
$ ( '.input-group:eq(2)' ) . hide ( ) ;
175
184
$ ( '.input-group:eq(3)' ) . show ( ) ;
176
- $ ( '#msg_container' ) . hide ( ) ;
177
185
$ ( '#calc' ) . val ( '点击生成bounds' ) ;
178
186
}
179
187
else if ( choose === 'destination' ) {
@@ -184,20 +192,18 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
184
192
$ ( '.input-group:eq(2)' ) . show ( ) ;
185
193
$ ( '.input-group:eq(3)' ) . show ( ) ;
186
194
$ ( '.input-group:eq(1)>span' ) . text ( '请输入距起点距离' ) ;
187
- $ ( '.input-group:eq(1)>input' ) . attr ( 'placeholder' , '请输入距起点距离' ) ;
195
+ $ ( '.input-group:eq(1)>input' ) . unbind ( 'focusout' ) . attr ( 'placeholder' , '请输入距起点距离' ) ;
188
196
$ ( '.input-group:eq(2)>span' ) . text ( '请输入方位' ) ;
189
197
$ ( '.input-group:eq(2)>input' ) . attr ( 'placeholder' , '请输入[-180,180]范围内的值' ) ;
190
198
setDestinationIcon ( ) ;
191
199
clearControl ( ) ;
192
- $ ( '#msg_container' ) . hide ( ) ;
193
200
$ ( '#calc' ) . val ( '点击显示目标点' ) ;
194
201
}
195
202
else if ( choose === 'distance' ) {
196
203
$ ( '.panel-heading>h5' ) . text ( '京津两点之间的距离' ) ;
197
204
setDefaultCenter ( 39.80771500024742 , 116.72499999899998 , 8 ) ;
198
205
clearControl ( ) ;
199
206
setDistanceIcon ( ) ;
200
- $ ( '#msg_container' ) . hide ( ) ;
201
207
$ ( '.input-group:eq(0)' ) . show ( ) ;
202
208
$ ( '.input-group:eq(1)' ) . hide ( ) ;
203
209
$ ( '.input-group:eq(2)' ) . hide ( ) ;
@@ -207,12 +213,12 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
207
213
else if ( choose === 'midpoint' ) {
208
214
$ ( '.panel-heading>h5' ) . text ( '获取京津之间的中点' ) ;
209
215
setDefaultCenter ( 39.90455699411283 , 116.407283 , 7 ) ;
216
+ clearControl ( ) ;
210
217
setMidpointIcon ( ) ;
211
218
$ ( '.input-group:eq(0)' ) . hide ( ) ;
212
219
$ ( '.input-group:eq(1)' ) . hide ( ) ;
213
220
$ ( '.input-group:eq(2)' ) . hide ( ) ;
214
221
$ ( '.input-group:eq(3)' ) . show ( ) ;
215
- $ ( '#msg_container' ) . hide ( ) ;
216
222
$ ( '#calc' ) . val ( '获取京津之间的中点' ) ;
217
223
}
218
224
else if ( choose === 'greatCircle' ) {
@@ -225,17 +231,15 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
225
231
$ ( '.input-group:eq(1)' ) . hide ( ) ;
226
232
$ ( '.input-group:eq(2)' ) . hide ( ) ;
227
233
$ ( '.input-group:eq(3)' ) . show ( ) ;
228
- $ ( '#msg_container' ) . hide ( ) ;
229
234
$ ( '#calc' ) . val ( '计算大圆航线' ) ;
230
235
}
231
236
else if ( choose === 'square' ) {
237
+ widgets . alert . showAlert ( '选择左侧控件,按下鼠标左键,画出自定义矩形,再点右侧按钮计算最小外切正方形' , true , 260 ) ;
232
238
$ ( '.panel-heading>h5' ) . text ( '最小外切正方形' ) ;
233
239
setDefaultCenter ( 39.70914100034369 , 116.11697300062501 , 14 ) ;
234
240
clearControl ( ) ;
235
241
drawController ( false , false , false , false , true ) ;
236
242
drawing ( ) ;
237
-
238
- $ ( '#msg_container' ) . hide ( ) ;
239
243
$ ( '.input-group:eq(0)' ) . hide ( ) ;
240
244
$ ( '.input-group:eq(1)' ) . hide ( ) ;
241
245
$ ( '.input-group:eq(2)' ) . hide ( ) ;
@@ -247,7 +251,6 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
247
251
setDefaultCenter ( 39.93393099410061 , 116.38035099999959 , 12 ) ;
248
252
clearControl ( ) ;
249
253
setCenterIcon ( ) ;
250
- $ ( '#msg_container' ) . hide ( ) ;
251
254
$ ( '.input-group:eq(0)' ) . hide ( ) ;
252
255
$ ( '.input-group:eq(1)' ) . hide ( ) ;
253
256
$ ( '.input-group:eq(2)' ) . hide ( ) ;
@@ -261,7 +264,6 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
261
264
setDefaultCenter ( 40.676116230453765 , 116.55439124389999 , 12 ) ;
262
265
clearControl ( ) ;
263
266
whiteRiver ( ) ;
264
- $ ( '#msg_container' ) . hide ( ) ;
265
267
$ ( '.input-group:eq(0)' ) . hide ( ) ;
266
268
$ ( '.input-group:eq(1)' ) . hide ( ) ;
267
269
$ ( '.input-group:eq(2)' ) . hide ( ) ;
@@ -270,45 +272,44 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
270
272
}
271
273
else if ( choose === 'buffer' ) {
272
274
$ ( '.panel-heading>h5' ) . text ( 'buffer缓冲区' ) ;
273
- widgets . alert . showAlert ( '请先点击左侧控件标记一个点' , true ) ;
275
+ widgets . alert . showAlert ( '请先点击左侧控件标记一个点' , true ) ;
274
276
clearControl ( ) ;
275
277
setDefaultCenter ( 40 , 116.83 , 9 ) ;
276
278
drawController ( false , false , false , false , false , false , true ) ;
277
279
drawing ( ) ;
278
- $ ( '#msg_container' ) . hide ( ) ;
280
+
279
281
$ ( '.input-group:eq(0)' ) . show ( ) ; //单位
280
282
$ ( '.input-group:eq(1)' ) . show ( ) ; //步长
281
283
$ ( '.input-group:eq(2)' ) . show ( ) ; //半径
282
284
$ ( '.input-group:eq(3)' ) . show ( ) ;
283
285
$ ( '.input-group:eq(1)>span' ) . text ( '请输入步长' ) ; //步长
284
- $ ( '.input-group:eq(1)>input' ) . attr ( 'placeholder' , '步长' ) ;
286
+ $ ( '.input-group:eq(1)>input' ) . unbind ( 'focusout' ) . attr ( 'placeholder' , '步长' ) ;
285
287
$ ( '.input-group:eq(2)>span' ) . text ( '请输入半径' ) ; //半径
286
288
$ ( '.input-group:eq(2)>input' ) . attr ( 'placeholder' , '半径' ) ;
287
289
$ ( '#calc' ) . val ( '生成标记点缓冲区' ) ;
288
290
}
289
291
else if ( choose === 'circle' ) {
290
292
$ ( '.panel-heading>h5' ) . text ( '圆多边形' ) ;
291
- widgets . alert . showAlert ( '请先点击左侧控件标记一个点' , true ) ;
293
+ widgets . alert . showAlert ( '请先点击左侧控件标记一个点' , true ) ;
292
294
clearControl ( ) ;
293
295
setDefaultCenter ( 40 , 116.83 , 9 ) ;
294
296
drawController ( false , false , false , false , false , false , true ) ;
295
297
drawing ( ) ;
296
298
$ ( '.title' ) . show ( ) ;
297
299
$ ( '.title>span' ) . text ( 'circle' ) ;
298
300
$ ( '.area' ) . hide ( ) ;
299
- $ ( '#msg_container' ) . hide ( ) ;
300
301
$ ( '.input-group:eq(0)' ) . show ( ) ; //单位
301
302
$ ( '.input-group:eq(1)' ) . show ( ) ; //步长
302
303
$ ( '.input-group:eq(2)' ) . show ( ) ; //半径
303
304
$ ( '.input-group:eq(3)' ) . show ( ) ;
304
305
$ ( '.input-group:eq(1)>span' ) . text ( '请输入步长' ) ; //步长
305
- $ ( '.input-group:eq(1)>input' ) . attr ( 'placeholder' , '步长' ) ;
306
+ $ ( '.input-group:eq(1)>input' ) . unbind ( 'focusout' ) . attr ( 'placeholder' , '步长' ) ;
306
307
$ ( '.input-group:eq(2)>span' ) . text ( '请输入半径' ) ; //半径
307
308
$ ( '.input-group:eq(2)>input' ) . attr ( 'placeholder' , '半径' ) ;
308
309
$ ( '#calc' ) . val ( '生成圆多边形' ) ;
309
310
}
310
311
else {
311
- widgets . alert . showAlert ( '方法不存在' , false ) ;
312
+ widgets . alert . showAlert ( '方法不存在' , false ) ;
312
313
}
313
314
showPanel ( ) ;
314
315
}
@@ -328,6 +329,7 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
328
329
//半径
329
330
radius = bearing ;
330
331
//角度
332
+
331
333
angle = distance ;
332
334
333
335
meths = {
@@ -345,7 +347,7 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
345
347
"circle" : circle ,
346
348
} ;
347
349
if ( ! meths [ choose ] ) {
348
- widgets . alert . showAlert ( '选择非法,请重新选择' , false ) ;
350
+ widgets . alert . showAlert ( '选择非法,请重新选择' , false ) ;
349
351
}
350
352
meths [ choose ] ( ) ;
351
353
} ) ;
@@ -367,10 +369,6 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
367
369
circlemarker : circlemarker ,
368
370
marker : marker ,
369
371
remove : { } ,
370
- } ,
371
- edit : {
372
- featureGroup : editableLayers ,
373
- remove : true
374
372
}
375
373
} ;
376
374
drawControl = new L . Control . Draw ( options ) ;
@@ -499,6 +497,7 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
499
497
} ) ;
500
498
}
501
499
500
+
502
501
//设置destination方法的Icon.
503
502
function setDestinationIcon ( ) {
504
503
marker3 = L . marker ( [ 39.90455699411283 , 116.407283 ] ) ;
@@ -556,7 +555,8 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
556
555
//清空当前图层
557
556
function removeLayer ( ) {
558
557
map . eachLayer ( function ( layer ) {
559
- if ( baseLayer !== layer ) {
558
+
559
+ if ( layer !== baseLayer ) {
560
560
layer . removeFrom ( map ) ;
561
561
}
562
562
} ) ;
@@ -599,15 +599,15 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
599
599
if ( reg . test ( num ) ) {
600
600
return 1 ;
601
601
} else {
602
- widgets . alert . showAlert ( '非法输入,请重新输入' , 0 , 260 )
602
+ widgets . alert . showAlert ( '非法输入,请重新输入' , false , 260 )
603
603
}
604
604
}
605
605
606
606
//判断是否在[-180,180]范围内
607
607
function isInRange ( val ) {
608
608
// return val >= -180 && val <= 180;
609
609
if ( val < - 180 || val > 180 ) {
610
- widgets . alert . showAlert ( '请输入[-180,180]范围内的值' , 0 , 260 ) ;
610
+ widgets . alert . showAlert ( '请输入[-180,180]范围内的值' , false , 260 ) ;
611
611
}
612
612
else {
613
613
return 1 ;
@@ -626,12 +626,10 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
626
626
//turf along方法
627
627
function along ( ) {
628
628
if ( unit != 'null' && unit != undefined ) {
629
- widgets . alert . clearAlert ( ) ;
630
629
if ( checkIsNum ( distance ) && coordinate ) {
631
630
turfLayer . process ( "Helper.lineString" , {
632
631
"coordinates" : coordinate ,
633
632
} , function ( line ) {
634
-
635
633
resultLayer . process ( "Measurement.along" , {
636
634
"line" : line ,
637
635
"distance" : distance ,
@@ -641,7 +639,7 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
641
639
}
642
640
}
643
641
else {
644
- widgets . alert . showAlert ( '请选择单位' , 0 , 260 ) ;
642
+ widgets . alert . showAlert ( '请选择单位' , false , 260 ) ;
645
643
}
646
644
}
647
645
@@ -655,13 +653,13 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
655
653
"geojson" : polygon
656
654
} , function ( e ) {
657
655
result = e + '平方米' ;
658
- widgets . alert . showAlert ( result , 1 ) ;
656
+ widgets . alert . showAlert ( result , true ) ;
659
657
$ ( " input[ id='area' ] " ) . val ( result ) ;
660
658
} ) ;
661
659
} ) ;
662
660
}
663
661
else {
664
- widgets . alert . showAlert ( '请画出图层' , 0 , 260 ) ;
662
+ widgets . alert . showAlert ( '请画出图层' , false , 260 ) ;
665
663
}
666
664
}
667
665
@@ -698,7 +696,7 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
698
696
}
699
697
}
700
698
else {
701
- widgets . alert . showAlert ( '请选择单位' , 0 , 260 )
699
+ widgets . alert . showAlert ( '请选择单位' , false , 260 )
702
700
}
703
701
}
704
702
@@ -710,8 +708,13 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
710
708
"degrees" : "角度" ,
711
709
"radians" : "弧度" ,
712
710
} ;
711
+ var inUnits = {
712
+ "千米" : "kilometers" ,
713
+ "英里" : "miles" ,
714
+ "角度" : "degrees" ,
715
+ "弧度" : "radians" ,
716
+ } ;
713
717
if ( unit != 'null' && unit != undefined ) {
714
- widgets . alert . clearAlert ( ) ;
715
718
resultLayer . process ( "Measurement.distance" , {
716
719
"from" : turfLayer . toGeoJSON ( ) . features [ 0 ] . geometry . coordinates [ 0 ] ,
717
720
"to" : turfLayer . toGeoJSON ( ) . features [ 0 ] . geometry . coordinates [ 1 ] ,
@@ -721,11 +724,12 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
721
724
} ) ;
722
725
unit = disUnits [ unit ] ;
723
726
result = resultNum + unit ;
724
- widgets . alert . showAlert ( result , 1 , 260 ) ;
727
+ widgets . alert . showAlert ( result , true , 260 ) ;
725
728
$ ( " input[ id='area' ] " ) . val ( result ) ;
729
+ unit = inUnits [ unit ] ;
726
730
}
727
731
else {
728
- widgets . alert . showAlert ( '请选择单位' , 0 , 260 )
732
+ widgets . alert . showAlert ( '请选择单位' , false , 260 )
729
733
}
730
734
731
735
}
@@ -759,6 +763,9 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
759
763
760
764
//turf square
761
765
function square ( ) {
766
+ if ( ! coordinate ) {
767
+ return ;
768
+ }
762
769
turfLayer . process ( "Helper.polygon" , {
763
770
"coordinates" : coordinate ,
764
771
} , function ( e ) {
@@ -822,11 +829,11 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
822
829
} ) ;
823
830
} ) ;
824
831
} else {
825
- widgets . alert . showAlert ( '填入数据不完善或错误' , 0 , 260 ) ;
832
+ widgets . alert . showAlert ( '填入数据不完善或错误' , false , 260 ) ;
826
833
}
827
834
}
828
835
else {
829
- widgets . alert . showAlert ( '请选择单位' , 0 , 260 ) ;
836
+ widgets . alert . showAlert ( '请选择单位' , false , 260 ) ;
830
837
}
831
838
832
839
}
@@ -851,7 +858,7 @@ <h5 class='panel-title text-center'>京深路卧龙岗隧道路段</h5>
851
858
} ) ;
852
859
}
853
860
else {
854
- widgets . alert . showAlert ( '填入数据不完善或错误' , 0 , 260 ) ;
861
+ widgets . alert . showAlert ( '填入数据不完善或错误' , false , 260 ) ;
855
862
}
856
863
}
857
864
0 commit comments