|
2164 | 2164 | function d3_geo_equirectangular(λ, φ) { |
2165 | 2165 | return [ λ, φ ]; |
2166 | 2166 | } |
2167 | | - function d3_geo_graticuleX(y0, y1) { |
2168 | | - var y = d3.range(y0, y1 - ε, d3_geo_graticulePrecision).concat(y1); |
| 2167 | + function d3_geo_graticuleX(y0, y1, dy) { |
| 2168 | + var y = d3.range(y0, y1 - ε, dy).concat(y1); |
2169 | 2169 | return function(x) { |
2170 | 2170 | return y.map(function(y) { |
2171 | 2171 | return [ x, y ]; |
2172 | 2172 | }); |
2173 | 2173 | }; |
2174 | 2174 | } |
2175 | | - function d3_geo_graticuleY(x0, x1) { |
2176 | | - var x = d3.range(x0, x1 - ε, d3_geo_graticulePrecision).concat(x1); |
| 2175 | + function d3_geo_graticuleY(x0, x1, dx) { |
| 2176 | + var x = d3.range(x0, x1 - ε, dx).concat(x1); |
2177 | 2177 | return function(y) { |
2178 | 2178 | return x.map(function(x) { |
2179 | 2179 | return [ x, y ]; |
|
6639 | 6639 | geometries: graticule.lines() |
6640 | 6640 | }; |
6641 | 6641 | } |
6642 | | - var x1, x0, y1, y0, dx = 22.5, dy = dx, x, y; |
| 6642 | + var x1, x0, y1, y0, dx = 22.5, dy = dx, x, y, precision = 2.5; |
6643 | 6643 | graticule.lines = function() { |
6644 | 6644 | return d3.range(Math.ceil(x0 / dx) * dx, x1, dx).map(x).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).map(y)).map(function(coordinates) { |
6645 | 6645 | return { |
|
6660 | 6660 | y0 = +_[0][1], y1 = +_[1][1]; |
6661 | 6661 | if (x0 > x1) _ = x0, x0 = x1, x1 = _; |
6662 | 6662 | if (y0 > y1) _ = y0, y0 = y1, y1 = _; |
6663 | | - x = d3_geo_graticuleX(y0, y1); |
6664 | | - y = d3_geo_graticuleY(x0, x1); |
6665 | | - return graticule; |
| 6663 | + return graticule.precision(precision); |
6666 | 6664 | }; |
6667 | 6665 | graticule.step = function(_) { |
6668 | 6666 | if (!arguments.length) return [ dx, dy ]; |
6669 | 6667 | dx = +_[0], dy = +_[1]; |
6670 | 6668 | return graticule; |
6671 | 6669 | }; |
| 6670 | + graticule.precision = function(_) { |
| 6671 | + if (!arguments.length) return precision; |
| 6672 | + precision = +_; |
| 6673 | + x = d3_geo_graticuleX(y0, y1, precision); |
| 6674 | + y = d3_geo_graticuleY(x0, x1, precision); |
| 6675 | + return graticule; |
| 6676 | + }; |
6672 | 6677 | return graticule.extent([ [ -180 + ε, -90 + ε ], [ 180 - ε, 90 - ε ] ]); |
6673 | 6678 | }; |
6674 | | - var d3_geo_graticulePrecision = 3; |
6675 | 6679 | d3.geo.greatArc = function() { |
6676 | 6680 | function greatArc() { |
6677 | 6681 | var d = greatArc.distance.apply(this, arguments), t = 0, dt = precision / d, coordinates = [ p0 ]; |
|
0 commit comments