|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <head> |
|
4 <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> |
|
5 <title>Albers Projection</title> |
|
6 <script type="text/javascript" src="../../d3.js"></script> |
|
7 <script type="text/javascript" src="../../d3.geo.js"></script> |
|
8 <script type="text/javascript" src="../../lib/jquery/jquery.min.js"></script> |
|
9 <script type="text/javascript" src="../../lib/jquery-ui/jquery-ui.min.js"></script> |
|
10 <style type="text/css"> |
|
11 |
|
12 @import url("../../lib/jquery-ui/jquery-ui.css"); |
|
13 |
|
14 body, .ui-widget { |
|
15 font: 14px Helvetica Neue; |
|
16 } |
|
17 |
|
18 svg { |
|
19 width: 960px; |
|
20 height: 500px; |
|
21 border: solid 1px #ccc; |
|
22 background: #eee; |
|
23 } |
|
24 |
|
25 #states path { |
|
26 fill: #ccc; |
|
27 stroke: #fff; |
|
28 } |
|
29 |
|
30 #states circle { |
|
31 fill: #fcc; |
|
32 stroke: #000; |
|
33 } |
|
34 |
|
35 div { |
|
36 width: 960px; |
|
37 } |
|
38 |
|
39 </style> |
|
40 </head> |
|
41 <body> |
|
42 <h3>Albers Projection</h3> |
|
43 <script type="text/javascript"> |
|
44 |
|
45 // Our projection. |
|
46 var xy = d3.geo.albers(), |
|
47 path = d3.geo.path().projection(xy); |
|
48 |
|
49 d3.select("body") |
|
50 .append("svg:svg") |
|
51 .append("svg:g") |
|
52 .attr("id", "states"); |
|
53 |
|
54 d3.json("../data/us-states.json", function(collection) { |
|
55 d3.select("#states") |
|
56 .selectAll("path") |
|
57 .data(collection.features) |
|
58 .enter().append("svg:path") |
|
59 .attr("d", path); |
|
60 d3.select("#states") |
|
61 .append("svg:circle") |
|
62 .attr("r", 10) |
|
63 .attr("transform", "translate(" + xy(xy.origin()).join(",") + ")") |
|
64 }); |
|
65 |
|
66 function refresh() { |
|
67 d3.selectAll("#states path") |
|
68 .attr("d", path); |
|
69 d3.select("#states circle") |
|
70 .attr("transform", "translate(" + xy(xy.origin()).join(",") + ")") |
|
71 d3.select("#parallels span") |
|
72 .text(xy.parallels()); |
|
73 d3.select("#lon span") |
|
74 .text(xy.origin()[0]); |
|
75 d3.select("#lat span") |
|
76 .text(xy.origin()[1]); |
|
77 d3.select("#scale span") |
|
78 .text(xy.scale()); |
|
79 d3.select("#translate-x span") |
|
80 .text(xy.translate()[0]); |
|
81 d3.select("#translate-y span") |
|
82 .text(xy.translate()[1]); |
|
83 } |
|
84 |
|
85 </script><p> |
|
86 <div id="lon">origin.longitude: <span>-98</span></div> |
|
87 <div id="lat">origin.latitude: <span>38</span></div><p> |
|
88 <div id="parallels">parallels: <span>29.5,45.5</span></div><p> |
|
89 <div id="scale">scale: <span>1000</span></div><p> |
|
90 <div id="translate-x">translate.x: <span>480</span></div> |
|
91 <div id="translate-y">translate.y: <span>250</span></div> |
|
92 <script type="text/javascript"> |
|
93 |
|
94 $("#parallels").slider({ |
|
95 range: true, |
|
96 min: -90, |
|
97 max: 90, |
|
98 step: 1e-1, |
|
99 values: [29.5, 45.5], |
|
100 slide: function(event, ui) { |
|
101 xy.parallels(ui.values); |
|
102 refresh(); |
|
103 } |
|
104 }); |
|
105 |
|
106 $("#lon").slider({ |
|
107 min: -180, |
|
108 max: 180, |
|
109 step: 1e-1, |
|
110 value: -98, |
|
111 slide: function(event, ui) { |
|
112 var origin = xy.origin(); |
|
113 origin[0] = ui.value; |
|
114 xy.origin(origin); |
|
115 refresh(); |
|
116 } |
|
117 }); |
|
118 |
|
119 $("#lat").slider({ |
|
120 min: -90, |
|
121 max: 90, |
|
122 step: 1e-1, |
|
123 value: 38, |
|
124 slide: function(event, ui) { |
|
125 var origin = xy.origin(); |
|
126 origin[1] = ui.value; |
|
127 xy.origin(origin); |
|
128 refresh(); |
|
129 } |
|
130 }); |
|
131 |
|
132 $("#scale").slider({ |
|
133 min: 0, |
|
134 max: 3000, |
|
135 value: 1000, |
|
136 slide: function(event, ui) { |
|
137 xy.scale(ui.value); |
|
138 refresh(); |
|
139 } |
|
140 }); |
|
141 |
|
142 $("#translate-x").slider({ |
|
143 min: -2000, |
|
144 max: 2000, |
|
145 value: 480, |
|
146 slide: function(event, ui) { |
|
147 var translate = xy.translate(); |
|
148 translate[0] = ui.value; |
|
149 xy.translate(translate); |
|
150 refresh(); |
|
151 } |
|
152 }); |
|
153 |
|
154 $("#translate-y").slider({ |
|
155 min: -2000, |
|
156 max: 2000, |
|
157 value: 250, |
|
158 slide: function(event, ui) { |
|
159 var translate = xy.translate(); |
|
160 translate[1] = ui.value; |
|
161 xy.translate(translate); |
|
162 refresh(); |
|
163 } |
|
164 }); |
|
165 |
|
166 </script> |
|
167 </body> |
|
168 </html> |