@@ -79,8 +79,8 @@ describe('UI.InfoWindow', function () {
79
79
} ) ;
80
80
81
81
it ( 'infowindow not repeat fire show event when geometry symbol change' , function ( done ) {
82
- var marker1 = new maptalks . Marker ( map . getCenter ( ) , {
83
- symbol :{
82
+ var marker1 = new maptalks . Marker ( map . getCenter ( ) , {
83
+ symbol : {
84
84
'markerType' : 'ellipse' ,
85
85
'markerWidth' : 40 ,
86
86
'markerHeight' : 40 ,
@@ -93,8 +93,8 @@ describe('UI.InfoWindow', function () {
93
93
content : 'hello maptalks'
94
94
} ) ;
95
95
96
- var marker2 = new maptalks . Marker ( map . getCenter ( ) . add ( 0.001 , 0 ) , {
97
- symbol :{
96
+ var marker2 = new maptalks . Marker ( map . getCenter ( ) . add ( 0.001 , 0 ) , {
97
+ symbol : {
98
98
'markerType' : 'ellipse' ,
99
99
'markerWidth' : 40 ,
100
100
'markerHeight' : 40 ,
@@ -106,29 +106,90 @@ describe('UI.InfoWindow', function () {
106
106
title : 'hello maptalks' ,
107
107
content : 'hello maptalks'
108
108
} ) ;
109
- [ marker1 , marker2 ] . forEach ( function ( marker ) {
110
- marker . getInfoWindow ( ) . on ( 'showstart' , function ( e ) {
109
+ [ marker1 , marker2 ] . forEach ( function ( marker ) {
110
+ marker . getInfoWindow ( ) . on ( 'showstart' , function ( e ) {
111
111
var ownver = e . target . getOwner ( ) ;
112
112
if ( ! ownver . _orignalSymbol ) {
113
113
ownver . _orignalSymbol = ownver . getSymbol ( ) ;
114
114
}
115
- //The show event should not be triggered,otherwise error:Maximum call stack size exceeded
115
+ //The show event should not be triggered,otherwise error:Maximum call stack size exceeded
116
116
e . target . getOwner ( ) . setSymbol ( ) ;
117
117
} )
118
- marker . getInfoWindow ( ) . on ( 'hide' , function ( e ) {
118
+ marker . getInfoWindow ( ) . on ( 'hide' , function ( e ) {
119
119
var ownver = e . target . getOwner ( ) ;
120
- //The show event should not be triggered,otherwise error:Maximum call stack size exceeded
120
+ //The show event should not be triggered,otherwise error:Maximum call stack size exceeded
121
121
ownver . setSymbol ( ownver . _orignalSymbol ) ;
122
122
} )
123
123
} ) ;
124
124
//fire show events
125
125
marker1 . openInfoWindow ( ) ;
126
- setTimeout ( function ( ) {
127
- marker2 . openInfoWindow ( ) ;
128
- setTimeout ( function ( ) {
129
- done ( ) ;
130
- } , 100 )
131
- } , 100 )
126
+ setTimeout ( function ( ) {
127
+ marker2 . openInfoWindow ( ) ;
128
+ setTimeout ( function ( ) {
129
+ done ( ) ;
130
+ } , 100 )
131
+ } , 100 )
132
+
133
+ } ) ;
134
+ it ( '#2133 infowindow when owner coordinates carry z value' , function ( done ) {
135
+ const pointSymbol = {
136
+ markerType : 'ellipse' ,
137
+ markerWidth : 20 ,
138
+ markerHeight : 20
139
+ } ;
140
+ const lineSymbol = {
141
+ lineColor : 'black' ,
142
+ lineWidth : 4
143
+ } ;
144
+
145
+ const fillSymbol = {
146
+ polygonFill : "black" ,
147
+ polygonOpacity : 1
148
+ } ;
149
+ map . setCenter ( [ 0 , 0 ] ) ;
150
+ map . setZoom ( 12 ) ;
151
+ //geometry coordinates carry z value
152
+ const lefttop = [ - 0.01 , 0.01 , 1 ] , righttop = [ 0.01 , 0.01 , 1 ] , rightbottom = [ 0.01 , - 0.01 , 1 ] , leftbottom = [ - 0.01 , - 0.01 , 1 ] ;
153
+ const point = new maptalks . Marker ( lefttop , { symbol : pointSymbol } ) ;
154
+ const multipoint = new maptalks . MultiPoint ( [ lefttop , lefttop ] , { symbol : pointSymbol } ) ;
155
+ const line = new maptalks . LineString ( [ lefttop , righttop ] , { symbol : lineSymbol } ) ;
156
+ const multiline = new maptalks . MultiLineString ( [ [ lefttop , righttop ] , [ lefttop , righttop ] ] , { symbol : lineSymbol } ) ;
157
+ const polygon = new maptalks . Polygon ( [ [ lefttop , righttop , rightbottom , leftbottom ] ] , { symbol : fillSymbol } ) ;
158
+ const multipolygon = new maptalks . MultiPolygon ( [ [ [ lefttop , righttop , rightbottom , leftbottom ] ] , [ [ lefttop , righttop , rightbottom , leftbottom ] ] ] , { symbol : fillSymbol } ) ;
159
+ const rectange = new maptalks . Rectangle ( lefttop , 2000 , 1000 , { symbol : fillSymbol } ) ;
160
+ const ellispe = new maptalks . Ellipse ( lefttop , 2000 , 1000 , { symbol : fillSymbol } ) ;
161
+ const sector = new maptalks . Sector ( lefttop , 1000 , 0 , 90 , { symbol : fillSymbol } ) ;
162
+ const circle = new maptalks . Circle ( lefttop , 1000 , { symbol : fillSymbol } ) ;
163
+ const geos = [ point , multipoint , line , multiline , polygon , multipolygon , circle , rectange , ellispe , sector ] ;
164
+ geos . forEach ( geo => {
165
+ geo . setInfoWindow ( {
166
+ animationDuration : 0 ,
167
+ title : 'hello maptalks' ,
168
+ content : 'hello maptalks'
169
+ } ) ;
170
+ } ) ;
171
+ let idx = 0 ;
172
+
173
+ function test ( ) {
174
+ if ( idx < geos . length ) {
175
+ layer . clear ( ) ;
176
+ const geo = geos [ idx ] ;
177
+ geo . addTo ( layer ) ;
178
+ setTimeout ( ( ) => {
179
+ const center = geo . getCenter ( ) ;
180
+ center . z = undefined ;
181
+ geo . openInfoWindow ( center ) ;
182
+ setTimeout ( function ( ) {
183
+ expect ( geo . getInfoWindow ( ) . __uiDOM . style . display ) . not . to . be . eql ( 'none' ) ;
184
+ idx ++ ;
185
+ test ( ) ;
186
+ } , 50 ) ;
187
+ } , 40 ) ;
188
+ } else {
189
+ done ( ) ;
190
+ }
191
+ }
132
192
193
+ test ( ) ;
133
194
} ) ;
134
195
} ) ;
0 commit comments