toolkit/javascript/d3/examples/bonne/bonne.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>Bonne 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 line {
       
    26   stroke: brown;
       
    27   stroke-dasharray: 4,2;
       
    28 }
       
    29 
       
    30 path {
       
    31   fill: #ccc;
       
    32   stroke: #fff;
       
    33 }
       
    34 
       
    35 div {
       
    36   width: 960px;
       
    37 }
       
    38 
       
    39     </style>
       
    40   </head>
       
    41   <body>
       
    42     <h3>Bonne Projection</h3>
       
    43     <script type="text/javascript">
       
    44 
       
    45 // Our projection.
       
    46 var xy = d3.geo.bonne(),
       
    47     path = d3.geo.path().projection(xy);
       
    48 
       
    49 var countries = d3.select("body").append("svg:svg")
       
    50     .attr("id", "countries");
       
    51 
       
    52 d3.json("../data/world-countries.json", function(collection) {
       
    53   countries.selectAll("path")
       
    54       .data(collection.features)
       
    55     .enter().append("svg:path")
       
    56       .attr("d", path)
       
    57     .append("svg:title")
       
    58       .text(function(d) { return d.properties.name; });
       
    59 });
       
    60 
       
    61 function refresh() {
       
    62   countries.selectAll("path")
       
    63       .attr("d", path);
       
    64   d3.select("#lon span")
       
    65       .text(xy.origin()[0]);
       
    66   d3.select("#lat span")
       
    67       .text(xy.origin()[1]);
       
    68   d3.select("#parallel span")
       
    69       .text(xy.parallel());
       
    70   d3.select("#scale span")
       
    71       .text(xy.scale());
       
    72   d3.select("#translate-x span")
       
    73       .text(xy.translate()[0]);
       
    74   d3.select("#translate-y span")
       
    75       .text(xy.translate()[1]);
       
    76 }
       
    77 
       
    78     </script><p>
       
    79     <div id="lon">origin.longitude: <span>0</span></div>
       
    80     <div id="lat">origin.latitude: <span>0</span></div><p>
       
    81     <div id="parallel">parallel: <span>45</span></div><p>
       
    82     <div id="scale">scale: <span>200</span></div><p>
       
    83     <div id="translate-x">translate.x: <span>480</span></div>
       
    84     <div id="translate-y">translate.y: <span>250</span></div>
       
    85     <script type="text/javascript">
       
    86 
       
    87 $("#lon").slider({
       
    88   min: -180,
       
    89   max: 180,
       
    90   step: 1e-1,
       
    91   value: 0,
       
    92   slide: function(event, ui) {
       
    93     var origin = xy.origin();
       
    94     origin[0] = ui.value;
       
    95     xy.origin(origin);
       
    96     refresh();
       
    97   }
       
    98 });
       
    99 
       
   100 $("#lat").slider({
       
   101   min: -90,
       
   102   max: 90,
       
   103   step: 1e-1,
       
   104   value: 0,
       
   105   slide: function(event, ui) {
       
   106     var origin = xy.origin();
       
   107     origin[1] = ui.value;
       
   108     xy.origin(origin);
       
   109     refresh();
       
   110   }
       
   111 });
       
   112 
       
   113 $("#parallel").slider({
       
   114   min: 0,
       
   115   max: 90,
       
   116   value: 45,
       
   117   slide: function(event, ui) {
       
   118     xy.parallel(ui.value);
       
   119     refresh();
       
   120   }
       
   121 });
       
   122 
       
   123 $("#scale").slider({
       
   124   min: 0,
       
   125   max: 800,
       
   126   value: 200,
       
   127   slide: function(event, ui) {
       
   128     xy.scale(ui.value);
       
   129     refresh();
       
   130   }
       
   131 });
       
   132 
       
   133 $("#translate-x").slider({
       
   134   min: -2000,
       
   135   max: 2000,
       
   136   value: 480,
       
   137   slide: function(event, ui) {
       
   138     var translate = xy.translate();
       
   139     translate[0] = ui.value;
       
   140     xy.translate(translate);
       
   141     refresh();
       
   142   }
       
   143 });
       
   144 
       
   145 $("#translate-y").slider({
       
   146   min: -2000,
       
   147   max: 2000,
       
   148   value: 250,
       
   149   slide: function(event, ui) {
       
   150     var translate = xy.translate();
       
   151     translate[1] = ui.value;
       
   152     xy.translate(translate);
       
   153     refresh();
       
   154   }
       
   155 });
       
   156 
       
   157     </script>
       
   158   </body>
       
   159 </html>