【问题标题】:SVG icons in Leaflet.js mapLeaflet.js 地图中的 SVG 图标
【发布时间】:2017-08-03 23:36:53
【问题描述】:

我有一个有效的传单地图,但无法使用 encodeURI 传递 SVG 图标(没有尝试 encodeURIComponent,因为我不确定这是问题所在)。我正在使用的gist 展示了如何传入 SVG 矩形,这很有效:

<svg xmlns='http://www.w3.org/2000/svg'> <rect> x='0' y='0' width='20' height='10' fill='#000000' </rect> </svg> 

但是,即使代码有效,在 SVGOMG 中进行了优化,并且在 SVG linters(例如 SVG Viewer)上正确显示,我也无法成功传递圆圈或路径。例如,一颗星星。

<svg xmlns='http://www.w3.org/2000/svg' width='50px' height='50px'><path d='M2,111 h300 l-242.7,176.3 92.7,-285.3 92.7,285.3 z' fill='#000000'/></svg>

example is on CodePen 和相关的代码行是:

var svgicon ="<svg xmlns='http://www.w3.org/2000/svg' width='50px' height='50px'><path d='M2,111 h300 l-242.7,176.3 92.7,-285.3 92.7,285.3 z' fill='#000000'/></svg>"

var url = encodeURI("data:image/svg+xml," + svgicon).replace(/%20/g, ' ').replace(/%22/g, "'").replace(/%3C/g,'<').replace(/%3E/g,'>');
console.log(url);

您可以在控制台中看到 SVG 路径。

"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='50px' height='50px'><path d='M2,111 h300 l-242.7,176.3 92.7,-285.3 92.7,285.3 z' fill='#000000'/></svg>"

什么都没有显示,也没有错误消息。有时会显示损坏的图片链接。

【问题讨论】:

    标签: javascript svg leaflet


    【解决方案1】:

    您可以在浏览器中显示该 svg 吗?我认为 SVG 路径的格式不正确。

    您定义一个 50(px) x 50(px) 的 svg 画布。

    <path d="
    M2,111
    h300
    l-242.7,176.3
       92.7,-285.3
       92.7,285.3
    Z
    " fill="#000"/>
    

    您在画布外部的 2,111 处以绝对 (M)ove 声明开始路径。随后是右侧的相对 (h) 水平线 300。 然后相对 (l)ines -242.7,176.3 92.7,-285.3 92.7,285.3 在你 clo(Z)e 路径之前。

    如果我将画布设置为 1000 * 1000,我会在浏览器中看到这个图标。这是你想看到的吗?

    我在 LeafletJS 中这样画:

    let achenSvgString = "<svg xmlns='http://www.w3.org/2000/svg' width='1000' height='1000'><path d='M2,111 h300 l-242.7,176.3 92.7,-285.3 92.7,285.3 z' fill='#000000'/></svg>"
    let myIconUrl = encodeURI("data:image/svg+xml," + achenSvgString).replace('#','%23');
    
    // L.icon({
    //     iconUrl: myIconUrl,
    //     iconSize: 40
    // });
    

    我没有调整大小,因为我只是将它敲入了一段工作代码,但您可以看到这里绘制的星星...

    【讨论】:

    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 2012-05-02
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多