mg4377娱乐娱城官网_mg4377娱乐手机版_www.mg4377.com

当前位置: mg4377娱乐娱城官网 > www.mg4377.com > 正文

js创设实时图形的示范代码,js使用示例代码

时间:2019-06-01 09:46来源:www.mg4377.com
正文介绍了使用D三.js创设物流地图的示范代码,分享给我们,具体如下: 选取D3.js创立物流地图的示范代码,d三.js示例代码 正文介绍了应用D叁.js创设物流地图的示范代码,分享给大家

正文介绍了使用D三.js创设物流地图的示范代码,分享给我们,具体如下:

选取D3.js创立物流地图的示范代码,d三.js示例代码

正文介绍了应用D叁.js创设物流地图的示范代码,分享给大家,具体如下:

示例图

图片 1

创造思路

  1. 亟待绘制一张中中原人民共和国地形图,做为背景。
  2. 急需重视城市的治理坐标,以绘制路张起源和终点。
  3. 收纳到物流单的城市,绘制三个闪光的符号。
  4. 业已有过物流单的对象城市,不再绘制路径。
  5. 每一遍新产生一笔物流单,都有1个标志沿着马路径移向目的的卡通片效果。
  6. 绘图甘休后的数额,须求清理掉,以调减对浏览器的财富占用。

千帆竞发撸码

1.创设网页模板

加载D3JS,为了便于调试,直接下载d三.js文书在地面,实际应用的时候,能够换到加载路线。注意,使用的是V四版的D三,和V叁版不一样。

创办1个DIV块,希图绘图。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf8">
    <script type="text/javascript" src="../../static/d3/d3.js"></script>
    <title>地图</title>
  </head>
  <body>
    <div class="fxmap">
    </div>
  </body>
  <script type="text/javascript"></script>
</html>

始建SVG,以下有所代码放在<script></script>中

var width=1000 , height=800; // 定义SVG宽高
var svg = d3.select("body div.fxmap")
            .append("svg")
            .attr("width", "width) 
            .attr("height", height)
            .style("background","#000"); //

创制SVG图形分组,以备调用

  1. gmp,保存背景地图和起源标志。
  2. mline,保存源点和目的之间的连线,以及指标点。
  3. buttion,测试用的按键
gmap = svg.append("g").attr("id", "map").attr("stroke", "white").attr("stroke-width",1);
    mline = svg.append("g").attr("id", "moveto").attr("stroke", "#FFF").attr("stroke-width", 1.5).attr("fill","#FFF");
    button = svg.append("g").attr("id", "button").attr("stroke", "white").attr("stroke-width", 1).attr("fill", "white");

创办投影函数

  1. 经纬度无法直接用来绘图,须求转换来平面坐标。d三js提供了相比丰裕的阴影方法,本例中利用了geoEquirectangular()方法。
  2. projection 是将经纬度转换为平面坐标的方法
  3. path 是将经纬度调换为连线绘制点坐标的点子(省得本人再写函数构造path路线)
var projection = d3.geoEquirectangular()
              .center([465,395]) // 指定投影中心,注意[]中的是经纬度
              .scale(height)
              .translate([width / 2, height / 2]);
var path = d3.geoPath().projection(projection);

创办marker标识,以便几个连线终点调用

  1. 出于会有多少个物流连线的巅峰,所以都位居二个marker标记中调用。
  2. 以此符号是由中间的 圆形 外圈 构成。外圈的闪耀效果其它创设。
marker = svg.append("defs")
          .append("marker")
          .append("marker")
          .attr("id", "pointer")
          .attr("viewBox","0 0 12 12")  // 可见范围
          .attr("markerWidth","12")    // 标记宽度
          .attr("markerHeight","12")    // 标记高度
          .attr("orient", "auto")     //
          .attr("markerUnits", "strokeWidth") // 随连接线宽度进行缩放
          .attr("refX", "6")       // 连接点坐标
          .attr("refY", "6")
    // 绘制标记中心圆
    marker.append("circle")
        .attr("cx", "6")
        .attr("cy", "6")
        .attr("r", "3")
        .attr("fill", "white");
    // 绘制标记外圆,之后在timer()中添加闪烁效果
    marker.append("circle")
        .attr("id", "markerC")
        .attr("cx", "6")
        .attr("cy", "6")
        .attr("r", "5")
        .attr("fill-opacity", "0")
        .attr("stroke-width", "1")
        .attr("stroke", "white");

绘图中中原人民共和国地图,并标识起源(斯科学普及里)

地图使用的治理集为china.json,那么些文件英特网有大多

// 记录长沙坐标
    var changsha = projection([112.59,28.12]);
    // 读取地图数据,并绘制中国地图
    mapdata = [];
    d3.json('china.json', function(error, data){
      if (error)
        console.log(error);
      // 读取地图数据
      mapdata = data.features;
      // 绘制地图
      gmap.selectAll("path")
        .data(mapdata)
        .enter()
        .append("path")
        .attr("d", path);
      // 标记长沙
      gmap.append("circle").attr("id","changsha")
        .attr("cx", changsha[0])
        .attr("cy", changsha[1])
        .attr("r", "6")
        .attr("fill", "yellow")
      gmap.append("circle").attr("id","changshaC")
        .attr("cx", changsha[0])
        .attr("cy", changsha[1])
        .attr("r", "10")
        .attr("stroke-width", "2")
        .attr("fill-opacity", "0");
    });

js创设实时图形的示范代码,js使用示例代码。创制方法,绘制一条从钦命源点到极限的连线,并在络点绘制marker标志。

  1. 措施供给输入终点城市称号(city)和经纬度(data)
  2. 调用在此以前创设的project()方法,将终点经纬度调换为平面坐标。
  3. 总计起源(苏州)和终端从前的距离,做为线条长度和卡通时间参数。
  4. 在线条上制图一个圆形标志,并贯彻从源点到极点的移动动画。
  5. 标记移动到终端后,即除去,节省能源。
  6. 一经线点在前头曾经绘制过,则不绘线条,只绘制移动标志。
  7. 每管理叁回物流单,则城市记录 一。
// 创建对象,保存每个城市的物流记录数量
    var citylist = new Object();
    // 创建方法,输入data坐标,绘制发射线
    var moveto = function(city, data){
      var pf = {x:projection([112.59,28.12])[0], y:projection([112.59,28.12])[1]};
      var pt = {x:projection(data)[0], y:projection(data)[1]};
      var distance = Math.sqrt((pt.x - pf.x)**2   (pt.y - pf.y)**2);
      if (city in citylist){
        citylist[city]  ;
      }else{
        mline.append("line")
            .attr("x1", pf.x)
            .attr("y1", pf.y)
            .attr("x2", pt.x)
            .attr("y2", pt.y)
            .attr("marker-end","url(#pointer)")
            .style("stroke-dasharray", " " distance ", " distance " ")
            .transition()
            .duration(distance*30)
            .styleTween("stroke-dashoffset", function(){
              return d3.interpolateNumber(distance, 0);
            });
        citylist[city] = 1;
      };
      mline.append("circle")
        .attr("cx", pf.x)
        .attr("cy", pf.y)
        .attr("r", 3)
        .transition()
        .duration(distance*30)
        .attr("transform", "translate(" (pt.x-pf.x) "," (pt.y-pf.y) ")")
        .remove();
    };

开创动画队例,完结标志外圈的闪耀效果

var scale = d3.scaleLinear();
    scale.domain([0, 1000, 2000])
      .range([0, 1, 0]);
    var start = Date.now();
    d3.timer(function(){
      var s1 = scale((Date.now() - start) 00);
      // console.log(s1);
      gmap.select("circle#changshaC")
        .attr("stroke-opacity", s1);
      marker.select("circle#markerC")
        .attr("stroke-opacity", s1);
    });

创建测试按键和测试的目的城市数据

var cityordinate = {
      '哈尔滨':[126.5416150000,45.8088260000],
      '石家庄':[116.46,39.92],
      '北京':[116.39564503787867,39.92998577808024],
      '上海':[121.480539,31.235929],
      '广州':[113.271431,23.135336],
      '重庆':[106.558434,29.568996],
      '青岛':[120.38442818368189,36.10521490127382],
      '福州':[119.30347,26.080429],
      '兰州':[103.840521,36.067235],
      '贵阳':[106.636577,26.653325],
      '成都':[104.081534,30.655822],
      '西安':[108.946466,34.347269],
      '长春':[125.3306020000,43.8219540000],
      '台湾':[120.961454,23.80406],
      '呼和浩特':[111.7555090000,40.8484230000],
      '澳门':[113.5494640000,22.1929190000],
      '武汉':[114.3115820000,30.5984670000],
      '昆明':[102.71460113878045,25.049153100453159],
      '乌鲁木齐':[87.56498774111579,43.84038034721766],
      '益阳':[112.36654664522563,28.58808777988717],
      '南京':[118.77807440802562,32.05723550180587],
      '武昌':[114.35362228468498,30.56486029278519],
    };

    // 随机获得目标城市
    var cityname = [], total = 0;
    for (var key in cityordinate){
      cityname[total  ] = key;
    };

    // 创建操作按钮,每次点击发射一条物流线
    button.append("circle")
        .attr("cx", width*0.9)
        .attr("cy", height*0.8)
        .attr("r", width/20)
        .attr("text","click")
        .attr("fill", "grey");
    button.append("text")
        .attr("x", width*0.87)
        .attr("y", height*0.81)
        .style("font-size", "30px")
        .text("click");
    button.on("click", function(){
      var _index = ~~(Math.random() * total);
      moveto(cityname[_index], cityordinate[cityname[_index]]);
    });

如上便是本文的全体内容,希望对大家的求学抱有帮忙,也可望大家多多帮助帮客之家。

本文介绍了采纳D三.js创立物流地图的言传身教代码,分享给大家,具体如下: 示例图 制作思路...

第三你需求在微型Computer上设置Node和npm。

复制代码 代码如下:

示例图

数据的可视化表示是传递复杂音讯的最实用手法之1,D三.js提供了创制这么些数量可视化的无敌区工作具和灵活性。

function mymodule(global, foreign, buffer) {
    "use asm";

图片 2

D叁.js是贰个JavaScript库,用于采纳SVG,HTML和CSS在Web浏览器中生成动态的交互式数据可视化。

    //

    // SECTION 1: imports

    var H32 = new global.Int32Array(buffer);
    var HU32 = new global.Uint32Array(buffer);
    var log = foreign.consoleDotLog;

构建思路

D叁 提供了各样不难易用的函数,大大简化了 JavaScript 操作数据的难度。由于它实质上是 JavaScript ,所以用 JavaScript 也是足以兑现全体机能的,但它能大大减小你的职业量,特别是在数额可视化方面,D3已经将调换可视化的头昏眼花步骤精简到了多少个简易的函数,你只要求输入多少个大约的数码,就能够转移为各类绚丽的图片。有过 JavaScript 基础的心上人一定很轻巧明白它。

    //

    // SECTION 2: functions

    function f(x, y, z, w) {
        // SECTION A: parameter type declarations
        x = x|0;      // int parameter
        y = y;       // double parameter

        // SECTION B: function body
        log(x|0);     // call into FFI -- must force the sign
        log(y);       // call into FFI -- already know it's a double
        x = (x 3)|0;  // signed addition

        // SECTION C: unconditional return
        return ((((x 1)|0)>>>0)/(x|0))>>>0; // compound expression
    }

    function g() {
        g_f = g_i; // read/write globals
        return;
    }

    function g2() {
        return;
    }

    function h(i, x) {
        i = i|0;
        x = x|0;
        H32[(i&0xffffffff)>>4] = x; // masked by 2^k-1, shifted by byte count
        ftable_2[(x-2)&2]();        // dynamic call of functions in table 2
    }

  1. 急需绘制一张中国地图,做为背景。
  2. 须要注重城市的治理坐标,以绘制路张源点和终极。
  3. 接到到物流单的城阙,绘制1个闪耀的记号。
  4. 一度有过物流单的目的城市,不再绘制路径。
  5. 历次新爆发一笔物流单,都有二个标记沿着路线移向目的的卡通片效果。
  6. 制图甘休后的数据,必要清理掉,以缩减对浏览器的财富占用。

在本教程中,大家将探究怎么着使用D叁.js和Pusher Channels塑造实时图形。假如你在阅读本教程时想要使用代码,请查看此GitHub存储库,个中涵盖代码的末段版本。

    //

    // SECTION 3: function tables

    var ftable_1 = [f];
    var ftable_2 = [g, g2]; // all of the same type

起初撸码

准备

    //

    // SECTION 4: globals

    var g_i = 0;   // int global
    var g_f = 0.0; // double global

一.开立网页模板

要完费用教程,您须要安装Node.js和npm。作者在创设本教程时使用的本子如下:

    //

    // SECTION 5: exports

    return { f_export: f, goop: g };
}

加载D三JS,为了方便调节和测试,直接下载d叁.js文本在本地,实际使用的时候,能够换到加载路径。注意,使用的是V四版的D3,和V三版有差别。

  • Node.js v10.4.1
  • npm v6.3.0

成立多个DIV块,计划绘图。

您还索要在微型Computer上安装http-server。它能够通过运转以下命令通过npm安装:npm install http-server。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf8">
    <script type="text/javascript" src="../../static/d3/d3.js"></script>
    <title>地图</title>
  </head>
  <body>
    <div class="fxmap">
    </div>
  </body>
  <script type="text/javascript"></script>
</html>

就算如此无需Pusher文化,但一旦熟稔它后,对读书JavaScript和D3.js会很有帮带。

创建SVG,以下有所代码放在<script></script>中

开始

var width=1000 , height=800; // 定义SVG宽高
var svg = d3.select("body div.fxmap")
            .append("svg")
            .attr("width", "width) 
            .attr("height", height)
            .style("background","#000"); //

第3,为大家要塑造的应用程序成立二个新目录。将其名字为实时图形或其余你喜欢的图形。在新创制的目录中,创建一个新的index.html文件并粘贴以下代码:

创造SVG图形分组,以备调用

//index.html

  <!DOCTYPE html>
  <hml lang="en">
  <head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <link rel="stylesheet" href="style.css" rel="external nofollow" >
   <title>Realtime D3 Chart</title>
  </head>
  <body>

   <script src="http://www.chansem.com/uploads/allimg/190601/0946014609-2.jpg"></script>
   <script src="https://d3js.org/d3.v5.min.js"></script>
   <script src="app.js"></script>
  </body>
  </html>
  1. gmp,保存背景地图和源点标识。
  2. mline,保存起源和目的之间的连线,以及指标点。
  3. buttion,测试用的按键

如您所见,HTML文件只是提取塑造图形所需的体裁和本子。大家正在利用D叁.js来营造图表,并利用Pusher来增多实时效应。app.js文件是应用程序前端代码的写入地点。

编辑:www.mg4377.com 本文来源:js创设实时图形的示范代码,js使用示例代码

关键词: