zoukankan      html  css  js  c++  java
  • 文章标题

    在学一张图的时候要弄清作者的写作思路,哪几个元素是成套出现的,谁在前谁在后,将思路轨迹理清楚,就像这篇文章
    1.projection—>path(projection)—->svg添加path并绑定数据,生成地图
    2.marker中添加arrow的path,生成箭头—–》marker中添加circle,定义起点—->svg中添加line标签,并绑定circle与arrow
    marker的数据形式,帮助我们理解为什么要这样做
    这里写图片描述

    var width=500,height=500;
    /*生成svg画布*/
        var svg=d3.select("body")
                   .append("svg")
                   .attr("width",width)
                   .attr("height",height)
        /*给地理路径生成器定义投影方式*/
        var projection=d3.geo.mercator()
                             .center([107,31])
                             .scale(600)
                             .translate([width/2,height/2]);
    
        var path=d3.geo.path().projection(projection);

    下边是定义marker,marker标签包裹path或者circle

    var defs=svg.append("defs");
        /*定义arrowmarker*/
        var arrowMarker=defs.append("marker")
                            .attr("id","arrow")
                            .attr("markerUnits","strokeWidth")
                            .attr("markerWidth","10")
                            .attr("markerHeight","10")
                            .attr("viewBox","0 0 12 12") 
                            .attr("refX","6")
                            .attr("refY","6")
                            .attr("orient","auto");
    
        var arrow_path = "M2,2 L10,6 L2,10 L6,6 L2,2";
    
        arrowMarker.append("path")
                    .attr("d",arrow_path)
                    .attr("fill","red");
    
        var startMarker=defs.append("marker")
                            .attr("id","startPoint")
                            .attr("markerUnits","strokeWidth")
                            .attr("markerWidth","12")
                            .attr("markerHeight","12")
                            .attr("viewBox","0 0 12 12") 
                            .attr("refX","6")
                            .attr("refY","6")
                            .attr("orient","auto");
    
        startMarker.append("circle")
                   .attr("cx",6)
                   .attr("cy",6)
                   .attr("r",2)
                   .style("fill","red");

    最后加载数据

    
        d3.json("china.topojson",function(error,toporoot){
            /*topojson转换为geojson*/
            if(error){
                window.alert("loading data error");
            }
    
        var georoot=topojson.feature(toporoot,toporoot.objects.china);
        console.log(georoot)
        var province=svg.append("g")
    
        province.selectAll("path")
                .data(georoot.features)
                .enter()
                .append("path")
                .attr("class","province")
                .style("fill","steelblue")
                .attr("d",path)
    
        var beijing = projection([116.3, 39.9]);
        var guilin = projection([110.3, 25.3]);
    
        svg.append("line")
           .attr("class","line_to")
           .attr("x1",guilin[0])
           .attr("y1",guilin[1])
           .attr("x2",beijing[0])
           .attr("y2",beijing[1])
           .attr("marker-start","url(#startPoint)")
           .attr("marker-end","url(#arrow)");
    
    
    
        })

    这里写图片描述

  • 相关阅读:
    Mybatis学习二(字段名与实体类属性名不相同/关联查询)
    SpringMVC学习二(日期参数/数据保存/重定向)
    Mybatis学习四(分页助手pagehelper)
    Mybatis学习三(动态sql语句)
    https详解
    http协议详解(超详细)
    Hdu 1072 【广搜】.cpp
    Hdu 1534 【差分约束系统】.cpp
    Hdu 1305 【字典树】.cpp
    并发
  • 原文地址:https://www.cnblogs.com/caojunjie/p/8318877.html
Copyright © 2011-2022 走看看