toolkit/javascript/d3/examples/mercator/mercator.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>Mercator 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>Mercator Projection</h3>
       
    43     <script type="text/javascript">
       
    44 
       
    45 // Our projection.
       
    46 var xy = d3.geo.mercator(),
       
    47     path = d3.geo.path().projection(xy);
       
    48 
       
    49 var states = d3.select("body")
       
    50   .append("svg:svg")
       
    51   .append("svg:g")
       
    52     .attr("id", "states");
       
    53 
       
    54 var equator = d3.select("svg")
       
    55   .append("svg:line")
       
    56     .attr("x1", "0%")
       
    57     .attr("x2", "100%");
       
    58 
       
    59 d3.json("../data/world-countries.json", function(collection) {
       
    60 
       
    61   states
       
    62     .selectAll("path")
       
    63       .data(collection.features)
       
    64     .enter().append("svg:path")
       
    65       .attr("d", path)
       
    66     .append("svg:title")
       
    67       .text(function(d) { return d.properties.name; });
       
    68 
       
    69   equator
       
    70       .attr("y1", xy([0, 0])[1])
       
    71       .attr("y2", xy([0, 0])[1])
       
    72 });
       
    73 
       
    74 function refresh() {
       
    75   states
       
    76     .selectAll("path")
       
    77       .attr("d", path);
       
    78 
       
    79   equator
       
    80       .attr("y1", xy([0, 0])[1])
       
    81       .attr("y2", xy([0, 0])[1])
       
    82 
       
    83   d3.select("#scale span")
       
    84       .text(xy.scale());
       
    85   d3.select("#translate-x span")
       
    86       .text(xy.translate()[0]);
       
    87   d3.select("#translate-y span")
       
    88       .text(xy.translate()[1]);
       
    89 }
       
    90 
       
    91     </script><p>
       
    92     <div id="scale">scale: <span>500</span></div><p>
       
    93     <div id="translate-x">translate.x: <span>480</span></div>
       
    94     <div id="translate-y">translate.y: <span>250</span></div>
       
    95     <script type="text/javascript">
       
    96 
       
    97 $("#scale").slider({
       
    98   min: 0,
       
    99   max: 3000,
       
   100   value: 500,
       
   101   slide: function(event, ui) {
       
   102     xy.scale(ui.value);
       
   103     refresh();
       
   104   }
       
   105 });
       
   106 
       
   107 $("#translate-x").slider({
       
   108   min: -2000,
       
   109   max: 2000,
       
   110   value: 480,
       
   111   slide: function(event, ui) {
       
   112     var translate = xy.translate();
       
   113     translate[0] = ui.value;
       
   114     xy.translate(translate);
       
   115     refresh();
       
   116   }
       
   117 });
       
   118 
       
   119 $("#translate-y").slider({
       
   120   min: -2000,
       
   121   max: 2000,
       
   122   value: 250,
       
   123   slide: function(event, ui) {
       
   124     var translate = xy.translate();
       
   125     translate[1] = ui.value;
       
   126     xy.translate(translate);
       
   127     refresh();
       
   128   }
       
   129 });
       
   130 
       
   131     </script>
       
   132   </body>
       
   133 </html>