3
3
*********************************************************************-->
4
4
<!DOCTYPE html>
5
5
< html >
6
- < head >
7
- < meta charset ="UTF-8 " / >
6
+ < head >
7
+ < meta charset ="UTF-8 ">
8
8
< title data-i18n ="resources.title_drawFeatures "> </ title >
9
9
< script type ="text/javascript " src ="../../dist/ol/include-ol.js "> </ script >
10
10
< style >
11
- .ol-popup {
12
- position : absolute;
13
- top : 50px ;
14
- right : 20px ;
15
- }
11
+ .ol-popup {
12
+ position : absolute;
13
+ top : 50px ;
14
+ right : 20px ;
15
+ }
16
16
</ style >
17
- </ head >
18
- < body style ="margin: 0; overflow: hidden; background: #fff; width: 100%; height: 100%; position: absolute; top: 0 ">
19
- < div id ="map " style ="width: 100%; height: 100% "> </ div >
20
- < div id ="popup " class ="ol-popup ">
21
- < div class ="btn-group " role ="group " aria-label ="... ">
22
- < button
23
- id ="drawPoint "
24
- value ="Point "
25
- type ="button "
26
- class ="btn btn-default "
27
- data-i18n ="resources.text_input_value_drawPoint "
28
- > </ button >
29
- < button
30
- id ="drawLine "
31
- value ="LineString "
32
- type ="button "
33
- class ="btn btn-default "
34
- data-i18n ="resources.text_input_value_drawLine "
35
- > </ button >
36
- < button
37
- id ="drawPolygon "
38
- value ="Polygon "
39
- type ="button "
40
- class ="btn btn-default "
41
- data-i18n ="resources.text_input_value_drawPolygon "
42
- > </ button >
43
- < button
44
- id ="drawCircle "
45
- value ="Circle "
46
- type ="button "
47
- class ="btn btn-default "
48
- data-i18n ="resources.btn_drawCircle "
49
- > </ button >
50
- < button id ="none " value ="None " type ="button " class ="btn btn-default " data-i18n ="resources.btn_notDraw "> </ button >
51
- < button
52
- id ="clear "
53
- value ="Clear "
54
- type ="button "
55
- class ="btn btn-default "
56
- data-i18n ="resources.text_input_value_clear "
57
- > </ button >
58
- </ div >
17
+ </ head >
18
+ < body style =" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0; ">
19
+ < div id ="map " style ="width: 100%;height:100% "> </ div >
20
+ < div id ="popup " class ="ol-popup ">
21
+ < div class ="btn-group " role ="group " aria-label ="... ">
22
+ < button id ="drawPoint " value ='Point ' type ="button " class ="btn btn-default " data-i18n ="resources.text_input_value_drawPoint "> </ button >
23
+ < button id ="drawLine " value ='LineString ' type ="button " class ="btn btn-default " data-i18n ="resources.text_input_value_drawLine "> </ button >
24
+ < button id ="drawPolygon " value ='Polygon ' type ="button " class ="btn btn-default " data-i18n ="resources.text_input_value_drawPolygon "> </ button >
25
+ < button id ="drawCircle " value ='Circle ' type ="button " class ="btn btn-default " data-i18n ="resources.btn_drawCircle "> </ button >
26
+ < button id ="none " value ='None ' type ="button " class ="btn btn-default " data-i18n ="resources.btn_notDraw "> </ button >
27
+ < button id ="clear " value ='Clear ' type ="button " class ="btn btn-default " data-i18n ="resources.text_input_value_clear "> </ button >
59
28
</ div >
60
- < script type ="text/javascript " include ="jquery,bootstrap " src ="../js/include-web.js "> </ script >
61
- < script type ="text/javascript ">
62
- var map ,
63
- draw ,
64
- url =
65
- ( window . isLocal ? window . server : 'http://172.16.14.44:8090' ) +
66
- '/iserver/services/map-china400/rest/maps/China' ;
67
- map = new ol . Map ( {
29
+ </ div >
30
+ < script type ="text/javascript " include ="jquery,bootstrap " src ="../js/include-web.js "> </ script >
31
+ < script type ="text/javascript ">
32
+ var map , draw ,
33
+ url = ( window . isLocal ? window . server : "https://iserver.supermap.io" ) + "/iserver/services/map-china400/rest/maps/China" ;
34
+ map = new ol . Map ( {
68
35
target : 'map' ,
69
- wrapX : true ,
70
- controls : ol . control
71
- . defaults ( { attributionOptions : { collapsed : false } } )
72
- . extend ( [ new ol . supermap . control . Logo ( { link : 'https://iclient.supermap.io' } ) ] ) ,
36
+ controls : ol . control . defaults ( { attributionOptions : { collapsed : false } } )
37
+ . extend ( [ new ol . supermap . control . Logo ( { link : "https://iclient.supermap.io" } ) ] ) ,
73
38
view : new ol . View ( {
74
- center : [ 12957388 , 4853991 ] ,
75
- zoom : 1 ,
76
- projection : 'EPSG:3857' ,
77
- multiWorld : true
39
+ center : [ 12957388 , 4853991 ] ,
40
+ zoom : 4 ,
41
+ projection : 'EPSG:3857' ,
42
+ multiWorld : true
78
43
} )
79
- } ) ;
80
- var layer = new ol . layer . Tile ( {
44
+ } ) ;
45
+ var layer = new ol . layer . Tile ( {
81
46
source : new ol . source . TileSuperMapRest ( {
82
- url : url ,
83
- wrapX : true
47
+ url : url ,
48
+ wrapX : true
84
49
} ) ,
85
50
projection : 'EPSG:3857'
86
- } ) ;
87
- var source = new ol . source . Vector ( { wrapX : true , useSpatialIndex : false } ) ;
88
- var vector = new ol . layer . Vector ( {
89
- renderBuffer : 100000 ,
51
+ } ) ;
52
+ var source = new ol . source . Vector ( { wrapX : false } ) ;
53
+ var vector = new ol . layer . Vector ( {
90
54
source : source
91
- } ) ;
92
- map . addLayer ( layer ) ;
93
- map . addLayer ( vector ) ;
94
- var info = new ol . control . Control ( { element : document . getElementById ( 'popup' ) } ) ;
95
- info . setMap ( map ) ;
96
- map . addControl ( info ) ;
55
+ } ) ;
56
+ map . addLayer ( layer ) ;
57
+ map . addLayer ( vector ) ;
58
+ var info = new ol . control . Control ( { element : document . getElementById ( 'popup' ) } ) ;
59
+ info . setMap ( map ) ;
60
+ map . addControl ( info ) ;
97
61
98
- var buttons = $ ( '.btn-group' ) . children ( ) ;
99
- buttons . map ( function ( key ) {
62
+ var buttons = $ ( '.btn-group' ) . children ( ) ;
63
+ buttons . map ( function ( key ) {
100
64
var value = buttons [ key ] . value ;
101
65
if ( value === 'None' ) {
102
- $ ( buttons [ key ] ) . on ( 'click' , function ( ) {
103
- clearInteraction ( ) ;
104
- } ) ;
105
- return ;
66
+ $ ( buttons [ key ] ) . on ( 'click' , function ( ) {
67
+ clearInteraction ( ) ;
68
+ } ) ;
69
+ return ;
106
70
}
107
71
if ( value === 'Clear' ) {
108
- $ ( buttons [ key ] ) . on ( 'click' , function ( ) {
109
- clearInteraction ( ) ;
110
- source . clear ( ) ;
111
- } ) ;
112
- return ;
72
+ $ ( buttons [ key ] ) . on ( 'click' , function ( ) {
73
+ clearInteraction ( ) ;
74
+ source . clear ( ) ;
75
+ } ) ;
76
+ return ;
113
77
}
114
78
$ ( buttons [ key ] ) . on ( 'click' , function ( ) {
115
- clearInteraction ( ) ;
116
- draw = new ol . interaction . Draw ( {
117
- source : source ,
118
- type : buttons [ key ] . value ,
119
- snapTolerance : 20 ,
120
- geometryFunction : function ( coord , geometry , projection ) {
121
- let newGeometry = coord . map ( ( coordinate ) => {
122
- return wrapX ( coordinate , projection )
123
- } ) ;
124
- if ( geometry ) {
125
- geometry . setCoordinates ( newGeometry , this . geometryLayout_ ) ;
126
- } else {
127
- geometry = new ol . geom . LineString ( newGeometry , 'XY' ) ;
128
- }
129
- return geometry ;
130
- } ,
131
- wrapX : true
132
- } ) ;
133
- map . addInteraction ( draw ) ;
79
+ clearInteraction ( ) ;
80
+ draw = new ol . interaction . Draw ( {
81
+ source : source ,
82
+ type : buttons [ key ] . value ,
83
+ snapTolerance : 20
84
+ } ) ;
85
+ map . addInteraction ( draw ) ;
134
86
} ) ;
135
- } ) ;
87
+ } ) ;
136
88
137
- function clearInteraction ( ) {
89
+ function clearInteraction ( ) {
138
90
if ( draw ) {
139
- map . removeInteraction ( draw ) ;
140
- }
141
- }
142
-
143
- function wrapX ( coordinate , projection ) {
144
- if ( projection . canWrapX ( ) ) {
145
- const worldWidth = getWidth ( projection . getExtent ( ) ) ;
146
- const worldsAway = getWorldsAway ( coordinate , projection , worldWidth ) ;
147
- if ( worldsAway ) {
148
- coordinate [ 0 ] -= worldsAway * worldWidth ;
149
- }
150
- }
151
- return coordinate ;
152
- }
153
-
154
- function getWorldsAway ( coordinate , projection , sourceExtentWidth ) {
155
- const projectionExtent = projection . getExtent ( ) ;
156
- let worldsAway = 0 ;
157
- if ( projection . canWrapX ( ) && ( coordinate [ 0 ] < projectionExtent [ 0 ] || coordinate [ 0 ] > projectionExtent [ 2 ] ) ) {
158
- sourceExtentWidth = sourceExtentWidth || getWidth ( projectionExtent ) ;
159
- worldsAway = Math . floor ( ( coordinate [ 0 ] - projectionExtent [ 0 ] ) / sourceExtentWidth ) ;
91
+ map . removeInteraction ( draw ) ;
160
92
}
161
- return worldsAway ;
162
- }
93
+ }
163
94
164
- function getWidth ( extent ) {
165
- return extent [ 2 ] - extent [ 0 ] ;
166
- }
167
- </ script >
168
- </ body >
169
- </ html >
95
+ </ script >
96
+ </ body >
97
+ </ html >
0 commit comments