如何在 OpenLayers-3 中使用 SVG 图像作为地图标记?

2023-11-22

我正在尝试使用 SVG 图像在 OpenLayers-3 (OL3) 中创建地图“针滴”(即地图标记)。

目前,我使用 PNG 图像作为引用 ol.style.Icon 源(“src”)属性的 pindrop,效果很好。但是,使用 SVG 图像时会失败。还有其他方法可以以相同的方式使用 SVG 吗?也许甚至可以使用 ol.style.Icon 之外的参考? Open Layers 中已经有很多内置的 SVG,所以这个should有可能,但我还没有找到在 OL3 中实现此功能的方法。我应该考虑在 OL3 中是否有其他方法可以做到这一点?

请注意:我们已经尝试使用 ol.Vector 图层,但是当用户放大/缩小时,SVG 图像的大小会增大/缩小,这是一个不充分的解决方法。


OL3(失败):

var createMapMarkerImage = function() {
    return function(feature, resolution) {
        var iconStyle = new ol.style.Style({
            image: new ol.style.Icon( ({
                src: 'img/map_pindrop.svg'   // OL3 doesn’t like this, but accepts a .PNG just fine
            }))
        });
        return [iconStyle];
    };
};

非常相似的功能,是我在网上找到的下面的示例,如果不是因为该示例使用调用 openlayers.js 库(而不是 OL3 的 ol.js 库)的 OpenLayers-2 (OL2) 功能,那么它几乎是完美的。遗憾的是,交换这些 javascript 文件失败了。


OL2(有效 - 但是oldOL库):

http://dev.openlayers.org/sandbox/camptocamp/tipi/examples/vector-symbols.html


在线搜索此问题的解决方案似乎只会导致其他困惑的人寻找解决方案。

请帮忙,

FreeBeer


根据 @ahocevar 的回答,您可以使用 SVG 的数据 URI:

new ol.style.Style({
  image: new ol.style.Icon({
    anchor: [0, 0],
    src: 'data:image/svg+xml;utf8,<svg>/* SVG DATA */</svg>'
  })
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 OpenLayers-3 中使用 SVG 图像作为地图标记? 的相关文章

  • 矩形相当于文本的文本锚点表示属性吗?

    是否有一个与文本的文本锚点表示属性等效的矩形 我希望能够从左侧 右侧或根据情况定位矩形 我知道这可以通过一些简单的计算来完成 但我只是想知道是否已经存在内置的东西 文本锚点演示属性上的链接 https developer mozilla o
  • 每 x 秒对 SVG 元素进行动画处理

    介绍 我了解一些基本的动画技术SVG两者同时使用Javascript和 DOM
  • 使用 d3 在两个节点之间绘制多条边

    我一直在关注 Mike Bostock 的代码这个例子 http bl ocks org 1153292学习如何在 d3 中绘制有向图 并且想知道如何构建代码 以便可以在图中的两个节点之间添加多个边 例如 如果上例中的数据集定义为 var
  • 从左到右显示 SVG 动画

    我有两个 SVG 图像 我想将它们设置为动画 如下所示 首先显示Full Screen文本从左到右 然后用第二个 SVG 覆盖该单词Screen显示整个第二个 SVG 因此 最后我将得到第二个 svg 中的单词 Full 黑色空间 以及单词
  • 如何在 Firefox 中缩放 SVG 背景图像而不考虑宽高比?

    我有一个CSSbackground image设置在具有流体高度和宽度的元素上 它是一个 SVG 预期的行为是让它向任何必要的方向拉伸以覆盖整个元素的区域 在 Chrome Safari 甚至是糟糕的 Internet Explorer 9
  • 使 SVG 中的混合模式真正起作用吗?

    我曾多次做过以下事情
  • 在 SVG 中绘制 DOM 对象时如何在 Canvas 中使用 Google 字体?

    根据 Mozilla 的文档 您可以在 Canvas 上绘制复杂的 HTML 例如this https developer mozilla org en US docs Web API Canvas API Drawing DOM obje
  • 创建响应式 SVG 剪辑路径 / 使 SVG 响应式

    我正在尝试使用创建响应式 SVG 剪辑路径
  • GeoJSON 要素坐标未显示在 OpenLayers 地图上

    我正在尝试显示一个GeoJSON地图上的多边形 我使用了 OpenLayers 提供的示例以及以下数据 但仅显示第二个多边形 var geojsonObject type FeatureCollection crs type name fe
  • 内联 svg 不显示在 xhtml 中

    我创建了一个带有内联 SVG 的 XHTML 文件 当测试为 XHTML 时 它不会显示 但当测试为 HTML 时 它会显示 我已经搜索过互联网并相信我已经指定了正确的名称空间等 但是 我很困惑为什么它没有显示 请帮助我理解我做错了什么 注
  • D3.js分组条形图

    I am making a bar chart using D3 js like this source statcan gc ca http www statcan gc ca pub 12 593 x 2007001 figures f
  • 在 D3 中在外部加载的 svg 图形上绘图

    我已经从 svg 文件加载了外部图形 我想尝试在其上绘图 但不知道如何操作 我的简单 d3 代码在这里
  • 分配函数后如何删除 onmouseout 事件?

    我有一个问题 我正在为 onmouseout 事件分配一个函数 但运行该事件后 我需要将其删除 将非常感谢您的帮助 这取决于你的代码 如果你用 d3 这样做 那么你可以说 在 onmouseout 事件函数中 element on mous
  • 元素不适应 Firefox 上的

    使用 ES6 ish D3js 模块运行 Angular 6 应用程序会导致 Firefox 出现问题 Chromium Chrome Safari 和 IE Edge 工作正常 伪代码看起来类似于 生产代码可以在下面找到
  • 使用 PHP 将 SVG 图像转换为 PNG

    我正在开发一个网络项目 该项目涉及动态生成的美国地图 根据一组数据为不同的州着色 这个 SVG 文件为我提供了一张很好的美国空白地图 并且很容易更改每个州的颜色 困难在于 IE 浏览器不支持 SVG 因此为了让我使用 svg 提供的便捷语法
  • 底部带有三角形的 div 和背景图像

    我想做一个div 有一个底部的三角形 但我需要三角形上的背景图像为了出现 我尝试使用伪元素 after 但它不起作用 homebg after content position absolute top 100 left 0 right 0
  • 在 Java 中使用 Batik 检查和删除 SVG 中的属性

    这个问题基本上说明了一切 如何检查 SVG 是否具有 viewBox 属性 我正在使用蜡染库 我需要这个 因为我需要 至少 通知用户有一个 viewBox 属性 我可以删除它吗 使用 org w3c dom 类 您可以按照以下方式做一些事情
  • Safari 滚动条和 SVG

    问题 Safari 无法正常工作 而是使用滚动条渲染我的 SVG 图像 问题的改进版本 如何填充设定的宽度并根据 Safari 中的宽高比计算高度 感谢普罗格兹 相关代码 SVG File viewBox 0 0 800 800 未指定高度
  • GeoJson 世界数据库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个项目 需要使用 d3 js 显示国家和城市的地图 实际上 D3支持GeoJson格式 通常
  • 如何在 SVG 中显示 unicode?

    以 SVG 格式存储在数据库中的信息 如果数据包含文本 它将显示为 Unicode 有必要在浏览器中正确显示 SVG 文件

随机推荐

  • Apache ProxyPass 和会话

    因此 我使用 Apache 将特定文件夹代理到 Glassfish 实例 我的conf中的规则是 ProxyPass folder http localhost 28083 ProxyPassReverse folder http loca
  • Windows 禁止文件和文件夹名称的完整列表

    在 Windows 上 禁止使用 com1 txt 或 lpt1 txt 等文件名 是否有 Windows 上所有禁止的文件和文件夹名称的列表 或文件和文件夹名称中的禁止字符 例如 无效字符列表为 gt 大于 冒号 双引号 正斜杠 反斜杠
  • 如何重写WebServiceHostFactory MaxReceivedMessageSize?

    那里有很多类似的问题 但我已经尝试了每个问题中的每一种解决方案都无济于事 我们有一个使用 WebServiceHostFactory 初始化的 Web 服务 但如果向其抛出超过 64k 的数据 我们会收到 400 错误请求 通常 只需增加
  • 在 Angular 2 中打印 Html 模板(Angular 2 中的 ng-print)

    我想在 Angular 2 中打印 HTML 模板 我已经对此进行了探索 我在 AngularJS 1 中得到了解决方案在 Angularjs 中打印 Html 模板 1 任何建议将不胜感激 这就是我在 angular2 中所做的 它类似于
  • Django 对“MEDIA_ROOT”做了什么?

    Django 是做什么的MEDIA ROOT确切地 我一直不明白 由于 Django 本身不提供静态媒体 并且您必须为其设置 apache 或类似的东西 为什么它关心它位于哪个目录 您不是唯一一个想知道的人 查看姜戈票 10650 根据 D
  • 确定当前文本选择包含哪些 DOM 元素

    我希望能够找出用户当前在浏览器中选择的文本中存在哪些 DOM 元素 document getSelection 将为我们获取当前选定的文本 但是我们如何确定该文本选择中包含哪些 DOM 元素呢 window getSelection 给你一
  • 如何为设置包(Root.plist)的文本字段提供占位符

    我想为设置包 Root plist 的文本字段提供占位符 是否可以 如果可以 如何 提前致谢 恐怕目前这是不可能的 我也试图这样做 但似乎找不到任何可行的解决方案 如果有帮助 应该放置此内容的官方文档是here
  • 短路与非短路操作员

    我理解下面的区别 至少对于Java if true false short circuiting boolean operator if true false non short circuiting boolean operator 但我
  • 什么时候需要 ScriptManager/ScriptManagerProxy?

    我认为我无法找到明确的答案 所以我会在这里问 什么时候需要 ScriptManager 或者在母版页上使用 ScriptManager 的情况下需要 ScriptManagerProxy 例如 假设我在 MasterPage 上有一个 Sc
  • pywin32 和 Excel。写入大量数据时出现异常

    我目前正在尝试使用 pywin32 库将大量数据写入 Excel 电子表格 作为我面临的问题的一个简单示例 使用以下代码生成 1000 个单元格 x 1000 个单元格的乘法表 import win32com client from win
  • 在管道处理期间可以从 spaCy 文档中删除令牌吗?

    我正在使用 spaCy 一个很棒的 Python NLP 库 来处理许多非常大的文档 但是 我的语料库中有一些我想在文档处理管道中消除的常见单词 有没有办法从管道组件内的文档中删除令牌 spaCy 的标记化是非破坏性的 因此它始终代表原始输
  • 从项目内的 JSON 文件读取

    我有一个名为资源在我的 WPF 项目中 我有一个设置 json在该目录内 我想从该文件中读取内容 在文件设置中我有构建操作 gt 嵌入资源 and 复制到输出目录 gt 始终复制我读了这样的文件 using StreamReader r n
  • MVC3 打开视图编译后出现奇怪的错误

    我目前正在使用 Razor 开发 MVC3 项目 我已经打开视图编译 以在编译时注意拼写错误等 一旦我在项目配置文件中打开 true 就会在编译过程中出现以下错误 错误1 在应用程序级别之外使用注册为allowDefinition Mach
  • d3 Sankey - 是否有可能影响或决定节点的放置?

    我正在使用 d3 js 的 Sankey 插件 有没有办法影响节点的自动放置 如果你比较下面两张图片 自动生成桑基图 https files secureserver net 0s3DEU5s3OZtqL 我手动重新排列后 https fi
  • 使用 RNDADDDENTROPY 将熵添加到 /dev/random

    我有一个设备会产生一些噪音 我想将其添加到嵌入式 Linux 系统中 dev random 设备的熵池中 我正在读 dev random 上的手册页我不太理解您传递给 RNDADDENTROPY ioctl 调用的结构 RNDADDENTR
  • Ruby 无需 eval 即可进行评估?

    如何在不使用 eval 的情况下评估数学字符串 Example mathstring 3 3 无论如何 可以在不使用 eval 的情况下进行评估吗 也许有正则表达式的东西 您必须或者eval它 或者解析它 既然你不想eval mathstr
  • com.android.ddmlib.SyncException:是一个目录

    当我尝试使用 Android Studio 中的 运行 按钮在我的设备上运行某个应用程序时 出现以下错误 12 16 15 05 27 Launching app adb push Users me myproject app build
  • 如何构建谷歌breakpad

    我完全不知道如何构建谷歌的breakpad 有一个 sln 文件 但它依赖于一个似乎没有关联 sln 的库 它似乎使用了一种叫做 gyp 的东西 我还没弄清楚如何开始工作 我试过 python gyp breakpad src client
  • Angular 7 项目无法在 Internet Explorer 11 中运行

    我已经通过互联网完成了不同帖子中提到的所有操作 但我的问题仍然存在 我取消了 IE 9 10 11 所需的 polyfill 的注释 IE9 IE10 and IE11 requires all of the following polyf
  • 如何在 OpenLayers-3 中使用 SVG 图像作为地图标记?

    我正在尝试使用 SVG 图像在 OpenLayers 3 OL3 中创建地图 针滴 即地图标记 目前 我使用 PNG 图像作为引用 ol style Icon 源 src 属性的 pindrop 效果很好 但是 使用 SVG 图像时会失败