svg - 在 OpenLayers 中使用 SVG 图标作为标记

标签 svg styles openlayers marker

我试图在 Openlayers-3 中将 svg 图标作为标记。在我的代码中。

var svg = '<?xml version="1.0"?>'
            + '<svg viewBox="0 0 120 120" version="1.1" xmlns="http://www.w3.org/2000/svg">'
            + '<circle cx="60" cy="60" r="60"/>'
            + '</svg>';

var style = new ol.style.Style({
            image: new ol.style.Icon({
                opacity: 1,
                src: 'data:image/svg+xml;base64,' + btoa(svg)
            })
        });

但是我的 svg 图像被截断了,如下图所示。 (
图标应该是一个圆圈)

enter image description here

最佳答案

这是一个在图标符号中显示内联 SVG 的示例:http://jsfiddle.net/eze84su3/

这是相关的代码:

var svg = '<svg width="120" height="120" version="1.1" xmlns="http://www.w3.org/2000/svg">'
    + '<circle cx="60" cy="60" r="60"/>'
    + '</svg>';

var style = new ol.style.Style({
  image: new ol.style.Icon({
    opacity: 1,
    src: 'data:image/svg+xml;utf8,' + svg,
    scale: 0.3
  })
});

与您的一些不同之处:
  • 我加了 widthheight <svg> 的属性.这让浏览器知道生成的图像有多大。
  • 我加了一个 scale属性到图标以调整图像大小。
  • 我用过 utf8而不是 base64编码(不重要)。
  • 关于svg - 在 OpenLayers 中使用 SVG 图标作为标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37829941/

    相关文章:

    java - 在java中将svg转换为pdf时更改字体

    c# - 无法设置 TabControl 的样式

    c# - 在 WPF 中设置按钮 FlatStyle

    移动设备上的 OpenLayers 3 dragBox

    javascript - 带有初始标记的 OpenLayer 加载 map

    javascript - 为什么 svg animateTransform 只在第一项上激活?

    css - 转换持续时间在 Firefox 中不起作用

    linux - 当从 CentOS 6.5 中的 Tomcat 7 提供服务时,内联 SVG 无法在 IE9+ 中呈现

    javascript - 为什么 DOM 元素为空?

    javascript - OpenLayers 弹出窗口不响应事件