如何将Maki svg图标与Snap.svg一起使用?
为了使用svg,我正在尝试使用Snap,并且需要能够使用中定义的Maki图标 我的计划是加载我需要的svg,然后在一张快照纸上为特定图标实例化它们。但为了让它工作,我需要把图标放在纸上的某个特定位置,但我无法让翻译工作。以下两种翻译技巧都不起作用;代码按原样工作,但始终将图标放置在左上角 我错过了什么?关于Snap的文档不够,我不知道问题是Maki图标svg的定义方式,还是我对Snap的使用如何将Maki svg图标与Snap.svg一起使用?,svg,icons,snap.svg,Svg,Icons,Snap.svg,为了使用svg,我正在尝试使用Snap,并且需要能够使用中定义的Maki图标 我的计划是加载我需要的svg,然后在一张快照纸上为特定图标实例化它们。但为了让它工作,我需要把图标放在纸上的某个特定位置,但我无法让翻译工作。以下两种翻译技巧都不起作用;代码按原样工作,但始终将图标放置在左上角 我错过了什么?关于Snap的文档不够,我不知道问题是Maki图标svg的定义方式,还是我对Snap的使用 var icon = Snap.load("maki/bicycle-24.svg", func
var icon = Snap.load("maki/bicycle-24.svg", function(f) {
var g = f.select("g").clone();
// var g = f.select("#layer1").clone(); // also works
// g.transform("t120,120");
// var t = new Snap.Matrix();
// t.translate(120,120);
// g.transform(t);
paper.append(g);
});
克隆需要在追加之后进行,就像在快照中加载svg时只是一个片段一样 所以你需要做一些像
paper.append(f);
var element = paper.select('#someId').clone();
element.transform( myTransform );
谢谢大家!!成功了!由于Snap的文档记录非常糟糕,我将在这里插入代码,以提供一个通用的解决方案
// Base set from which markers are constructed
var iconSet = paper.group();
iconSet.attr({ class: 'hide' });
// Instantiations of icons
var markers = paper.g();
// Now, create SVG shape
var icon = Snap.load("maki/bicycle-24.svg", function(icon) {
// Add it to the icon set
iconSet.append(icon);
// Instantiate it and remove from main view
var element = paper.select('#svg4460'); // Copies it!
// var element = paper.select('#base'); // Selects something but doesn't work
// var element = paper.select('#layer1'); // Selects something but doesn't work
// var element = paper.select('#bicycle-24'); // Silent fail
element = element.clone();
element.remove();
// Clone this icon and move it
var t = new Snap.Matrix();
t.translate(10,120);
element.transform(t);
// Insert into main document view (markers)
markers.add(element);
});