@@ -136,29 +136,34 @@ d3.geo.bounds = (function() {
136136
137137 d3 . geo . stream ( feature , bound ) ;
138138
139- // First, sort ranges by their minimum longitudes.
140- ranges . sort ( compareRanges ) ;
141-
142- // Then, merge any ranges that overlap.
143- for ( var i = 1 , n = ranges . length , a = ranges [ 0 ] , b , merged = [ a ] ; i < n ; ++ i ) {
144- b = ranges [ i ] ;
145- if ( withinRange ( b [ 0 ] , a ) || withinRange ( b [ 1 ] , a ) ) {
146- if ( angle ( a [ 0 ] , b [ 1 ] ) > angle ( a [ 0 ] , a [ 1 ] ) ) a [ 1 ] = b [ 1 ] ;
147- if ( angle ( b [ 0 ] , a [ 1 ] ) > angle ( a [ 0 ] , a [ 1 ] ) ) a [ 0 ] = b [ 0 ] ;
148- } else {
149- merged . push ( a = b ) ;
139+ var n = ranges . length ;
140+ if ( n ) {
141+ // First, sort ranges by their minimum longitudes.
142+ ranges . sort ( compareRanges ) ;
143+
144+ // Then, merge any ranges that overlap.
145+ for ( var i = 1 , a = ranges [ 0 ] , b , merged = [ a ] ; i < n ; ++ i ) {
146+ b = ranges [ i ] ;
147+ if ( withinRange ( b [ 0 ] , a ) || withinRange ( b [ 1 ] , a ) ) {
148+ if ( angle ( a [ 0 ] , b [ 1 ] ) > angle ( a [ 0 ] , a [ 1 ] ) ) a [ 1 ] = b [ 1 ] ;
149+ if ( angle ( b [ 0 ] , a [ 1 ] ) > angle ( a [ 0 ] , a [ 1 ] ) ) a [ 0 ] = b [ 0 ] ;
150+ } else {
151+ merged . push ( a = b ) ;
152+ }
150153 }
151- }
152154
153- // Finally, find the largest gap between the merged ranges.
154- // The final bounding box will be the inverse of this gap.
155- var best = - Infinity , dλ ;
156- for ( var n = merged . length - 1 , i = 0 , a = merged [ n ] , b ; i <= n ; a = b , ++ i ) {
157- b = merged [ i ] ;
158- if ( ( dλ = angle ( a [ 1 ] , b [ 0 ] ) ) > best ) best = dλ , λ0 = b [ 0 ] , λ1 = a [ 1 ] ;
155+ // Finally, find the largest gap between the merged ranges.
156+ // The final bounding box will be the inverse of this gap.
157+ var best = - Infinity , dλ ;
158+ for ( var n = merged . length - 1 , i = 0 , a = merged [ n ] , b ; i <= n ; a = b , ++ i ) {
159+ b = merged [ i ] ;
160+ if ( ( dλ = angle ( a [ 1 ] , b [ 0 ] ) ) > best ) best = dλ , λ0 = b [ 0 ] , λ1 = a [ 1 ] ;
161+ }
159162 }
160163 ranges = range = null ;
161164
162- return [ [ λ0 , φ0 ] , [ λ1 , φ1 ] ] ;
165+ return λ0 === Infinity || φ0 === Infinity
166+ ? [ [ NaN , NaN ] , [ NaN , NaN ] ]
167+ : [ [ λ0 , φ0 ] , [ λ1 , φ1 ] ] ;
163168 } ;
164169} ) ( ) ;
0 commit comments