关于添加图片到svg中,rails下使用js, 用parseFloat来调整force.on时的位置

注意在代码中用/表示路径。。。windows中file才是\

1、<image xlink:href=<%= asset_path ‘vnet/virtual_switch.png‘ %> x="0" y="0" height="30px" width="30px"/>

(1)在html中科院直接用嵌入式的方式获得rails中的图片。比如这里的图片放在\app\assets\images\vnet\virtual_switch.png,直接用rails的asset_path可以获得url

(2)当然使用直接路径也可以<image xlink:href="\assets\vnet\virtual_switch.png" x="800" y="0" height="30px" width="30px"/>

2、var image_vswitch = "/assets/vnet/virtual_switch.png";

在js中,不能使用嵌入式的方法,只有直接引用,注意这里的路径信息

3、用js在svg中添加图片,这里是先绑定g元素,然后再加,当然觉得如果没有其他的,只用image元素也是可以的

4、d3js中最后force.on的时候稍微调整图片的位置

node.attr("transform", function(d) { var dx = parseFloat(d.x) - 13;
                                         var dy = parseFloat(d.y) - 12;
                                         return "translate(" + dx + "," + dy + ")";
									   });

  

总代码好好看吧。

<%= render partial: ‘vnet_nav_bar‘ %>

<meta charset="utf-8">
<style>
/*
.node {
  stroke: #fff;
  stroke-width: 1.5px;
}

.link {
  stroke: #999;
  stroke-opacity: .6;
}
*/
</style>
<body>
  <svg width="2000" height="30">
    <image xlink:href=<%= asset_path ‘vnet/virtual_switch.png‘ %> x="0" y="0" height="30px" width="30px"/>
	<image xlink:href=<%= asset_path ‘vnet/virtual_machine.png‘ %> x="200" y="0" height="30px" width="30px"/>
	<image xlink:href=<%= asset_path ‘vnet/virtual_machine_container.png‘ %> x="400" y="0" height="30px" width="30px"/>
    <text x="33" y="18" fill="black">virtual switch</text>
    <text x="233" y="18" fill="black">virtual machine</text>
    <text x="433" y="18" fill="black">virtual machine container</text>

  </svg>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
/*
    <circle cx="12" cy="10" r="10"  fill="#FF3420"/>
    <circle cx="12" cy="35" r="10"  fill="#7FFF00"/>
	<circle cx="12" cy="60" r="10"  fill="#1E90FF"/>
    <!--rect x="2" y="50" width="20" height="20" style="fill:#1E90FF" /-->
	<image xlink:href="http://photo.kaibei.com/Upfiles/BeyondPic/zixun/shumajishu/2009-01/20090110011644496.gif" x="30"    y="80" height="50px" width="50px"/>
*/
var image_vswitch = "/assets/vnet/virtual_switch.png";
var image_vm = "/assets/vnet/virtual_machine.png";
var image_vmc = "/assets/vnet/virtual_machine_container.png";
var width = 960,
    height = 500;

//var color = d3.scale.category20();

var force = d3.layout.force()
    .charge(-1000)
    .linkDistance(30)
    .size([width, height])
	.gravity(0.25);

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);

d3.json("http://localhost:3000/vnets/topodata.json", function(error, graph) { //放入apach后这个地址是否要改?
  force.nodes(graph.nodes)
       .links(graph.links)
       .start();

  var link = svg.selectAll(".link")
      .data(graph.links)
      .enter().append("line")
	  .style("stroke","#C6E2FF")
	  .style("stroke-opacity","10")
	  .style("stroke-width","3")
      .attr("class", "link");
      //.style("stroke-width", function(d) { return Math.sqrt(d.value); });

  var node = svg.selectAll(".node").data(graph.nodes);
  var nodeEnter = node.enter()
                        .append("g")
                        .attr("class", "node")
                        .call(force.drag);
  nodeEnter.append("title")
           .text(function(d) { return d.name; });
  /*nodeEnter.append("circle")
           .attr("r", 8)
           .style("fill", function(d) { if(d.group == 1)return "#FF3420";
                                   else if(d.group == 2)return "#7FFF00";
								   else if(d.group == 3)return "#1E90FF";});*/
  nodeEnter.append("image")
           .attr("width","28px")
		   .attr("height","28px")
		   .attr("xlink:href", function(d) { if(d.group == 1)return image_vswitch;
                                   else if(d.group == 2)return image_vm;
								   else if(d.group == 3)return image_vmc;});

  nodeEnter.append("text")
		  .attr("dy", ".85em")
		  .text(function(d) { return d.name; })
		  .attr("font-size","13px") //字体大小
		  .style("fill","#0A0A0A");

  force.on("tick", function() {
    link.attr("x1", function(d) { return d.source.x; })
        .attr("y1", function(d) { return d.source.y; })
        .attr("x2", function(d) { return d.target.x; })
        .attr("y2", function(d) { return d.target.y; });

	//node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")";});
	node.attr("transform", function(d) { var dx = parseFloat(d.x) - 13;
                                         var dy = parseFloat(d.y) - 12;
                                         return "translate(" + dx + "," + dy + ")";
									   });
                               });
});

</script>

  

时间: 2024-11-09 20:39:02

关于添加图片到svg中,rails下使用js, 用parseFloat来调整force.on时的位置的相关文章

在Button上、下、左、右位置添加图片和文字

转载请注明出处:http://blog.csdn.net/droyon/article/details/37564419 很多人有如标题所述的需求,而且大多数人采用了自定义组件解决了需求,其实还可以有更"懒"的方法. 1.先附效果图: 2.方案. 首先,Activity.java public class MainActivityTest extends Activity{ @Override protected void onCreate(Bundle savedInstanceSt

如何在PDF文档内容中插入/添加图片文件

现在很多人都会使用PDF格式文件,但是却很少会有人知道怎么编辑这种文件,我们所见的PDF格式文档是一种及其特殊的文件,这种文不论是修改还是编辑都非常的困难,因此,如果我们需要在PDF文件中插入图片的话该怎么做呢?今天小编就来为大家详细的介绍下如何使用专业软件在PDF文件中插入图片! 需要使用的软件是迅捷PDF编辑器,是一款专业的PDF编辑软件,下载很简单,只要在浏览器上搜索到迅捷PDF编辑器是官方网站,点击软件下载后选择下路径就可以了.安装运行也极为简单,还要按照提示点击下一步就可以了,在官网下

向github的README文件中添加图片

1,向README文件中添加图片,用于展示程序效果或辅助说明! 两步: 首先,向github 上传所需的图片: 然后,打开README文件,写入图片的格式为: ![image](https://github.com/secondLieutenantCoder/TableAndCollection/blob/master/resut.png?raw=true) ![image](图片的URL) 图片写入成功!

在TextView中添加图片

TextView是一个很强大的控件,有时需要在一个控件中同时显示图片和文字,使用TextView很容易实现. 方法一: 聊天软件比如QQ一般都会有发送表情的功能,使用SpannableString+ImageSpan可以很容易实现 [java] view plaincopy private void showImageFace(String s,View v) { Bitmap bitmap; ImageSpan imageSpan; // 创建一个SpannableString对象,以便插入用

Rails 下添加阿里(alipay)快捷登录简易案例

示例项目地址 https://github.com/kai209209/alipay-login-example 申请获得阿里alipay的pid和key,并申请快捷登录功能 在运行之前先把你的hosts文件修改一下,设置本地使用的域名指向本机(ubuntu 14.04) sudo vim /etc/hosts 0.0.0.0 alipay-login-test.com ~ ~ ~ ~ ~ ~ ~ ~ "/etc/hosts" 15L, 408C 1,1 全部 然后重启你的网卡使域名生

datagrid行中添加图片按钮

columns: [[ { field: 'id', title: '删除', width: 30, formatter: function (value,row,index) { var d = '<a href="#" onclick =DeleteById("' + row.id + '")><img src="/Images/delete.png" /></a>'; return d; } } ]] 主

Android笔记:TextView和编辑框中添加图片,ImageSpan,SpannableStringBuilder用法

在TextView或者编辑框EditText中添加图片的方法,代码如下: import java.util.regex.Matcher; import java.util.regex.Pattern; import android.os.Bundle; import android.app.Activity; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text

怎么将jpg图片添加到CAD图纸中

怎么将jpg图片添加到CAD图纸中?在日常的操作中,会遇到很多棘手的问题,比如说建筑设计师们在查看CAD图纸的时候,发现有的地方不适合,需要添加一张图片,那怎么将jpg图片添加到CAD图纸中?具体要怎么来进行操作?那下面小编就来教教大家具体的操作步骤,有兴趣的朋友可以一起来看看.以下就是具体操作步骤. 第一步:首先打开电脑,如果电脑桌面中没有CAD编辑器的,可以在电脑桌面中任意的打开一个浏览器,然后在浏览器的搜索框中搜索迅捷CAD编辑器,接下来在下载界面中点击下载安装最新版本的CAD编辑器到电脑

在PHP中给图片添加图片水印

<?php //判断GD库是否存在 if (function_exists('imagepng')) { dir('GD库不存在'); } //图片路径 $imagePath = './img/a.jpg'; //图片信息 $imageInfo = getimagesize($imagePath); //图片扩展名 $imageExtension = image_type_to_extension($imageInfo[2], false); //获取图片 $func = 'imagecreat