Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Maki svg图标与Snap.svg一起使用?_Svg_Icons_Snap.svg - Fatal编程技术网

如何将Maki svg图标与Snap.svg一起使用?

如何将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

为了使用svg,我正在尝试使用Snap,并且需要能够使用中定义的Maki图标

我的计划是加载我需要的svg,然后在一张快照纸上为特定图标实例化它们。但为了让它工作,我需要把图标放在纸上的某个特定位置,但我无法让翻译工作。以下两种翻译技巧都不起作用;代码按原样工作,但始终将图标放置在左上角

我错过了什么?关于Snap的文档不够,我不知道问题是Maki图标svg的定义方式,还是我对Snap的使用

    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);
    });