toolkit/javascript/d3/examples/albers/albers.html
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     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>