I am trying to create map "pin-drops" (ie. map markers) in OpenLayers-3 (OL3) using SVG images.

Currently, I am using PNG images as the pindrops that reference the ol.style.Icon source (“src”) property attribute just fine. However, this fails using an SVG image. Is there some other way to use an SVG in the same manner? Maybe by using a reference besides ol.style.Icon even? There is already a lot of built-in SVG in Open Layers so this should be possible, but I haven't found a way to get this working in OL3. Is there some other way to do this in OL3 that I should consider?

Please note: we already tried using an ol.Vector layer, however when the user zooms in/out, the size of the SVG image grows/shrinks which is an inadequate workaround.

OL3 (fails):

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];

};

};

Very similar functionality, is the below example I found online, is almost perfect if it weren’t for the fact that the example uses OpenLayers-2 (OL2) functionality which calls openlayers.js library (instead of OL3’s ol.js library). Sadly, swapping these javascript files out fails.

OL2 (works -but is the old OL library):

Searching online for a solution to this seems to produce only other confused people searching for a solution.

Please help,

FreeBeer

解决方案

Based on @ahocevar answer, you can use data URIs for SVG:

new ol.style.Style({

image: new ol.style.Icon({

anchor: [0, 0],

src: 'data:image/svg+xml;utf8,/* SVG DATA */'

})

});

openlayers加载svg,如何在OpenLayers-3中将SVG图像用作地图标记?相关推荐

  1. Vue+Openlayers加载Geoserver发布的TileWMS后更换shp数据源的流程

    场景 Vue中使用Openlayers加载Geoserver发布的TileWMS: Vue中使用Openlayers加载Geoserver发布的TileWMS_BADAO_LIUMANG_QIZHI的 ...

  2. Vue中使用Openlayers加载Geoserver发布的TileWMS时单击获取shp文件的坐标信息

    场景 Vue中使用Openlayers加载Geoserver发布的TileWMS: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/ ...

  3. Vue中使用Openlayers加载Geoserver发布的TileWMS

    场景 Openlayers下载与加载geoserver的wms服务显示地图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/114 ...

  4. Vue中使用Openlayers加载Geoserver发布的ImageWMS

    场景 Openlayers下载与加载geoserver的wms服务显示地图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/114 ...

  5. Vue中使用Openlayers加载OSM(Open Street Map)显示街道地图

    场景 Openlayers下载与加载geoserver的wms服务显示地图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/114 ...

  6. WebGIS——Openlayers加载图层

    Openlayers加载图层 一.创建Html文件并在body中放入一个Div作为地图显示的容器 <body><div id="map" class=" ...

  7. vue openlayers 加载高德地图等 gcj02 的图层偏移问题

    vue openlayers 加载高德地图等 gcj02 的图层偏移问题 这个问题是在使用 openlayers 地图引擎加载高德地图或者是谷歌地图都会遇到的问题,所以说呢这篇博文稍微说一下解决办法. ...

  8. OpenLayers 加载天地图模糊的问题 OpenLayers 地图缩放模糊

    openlayers 加载天地图模糊的问题,OpenLayers 地图缩放几次之后模糊 2021年12月20日 纠正模糊原因: 地图加载瓦片实质上还是图片,一般来说是256&256,将一个静态 ...

  9. openlayers加载百度地图作为底图坐标偏移的解决办法

    openlayers加载天地图作为底图,在网上找了公开的服务资源,要做到百度地图与天地图之间切换,同样也从网上找到百度地图的服务资源但是在地图上坐标总是有偏差,最初的代码是这样的: var proje ...

  10. GIS初学者,最新OpenLayers WMTS 天地图,OpenLayers加载天地图、调用天地图WMTS示例、tianditu、EPSG:3857、EPSG:4326

    2018最新OpenLayers天地图加载可行方案,天地图WMTS调用,OpenLayers 天地图 WMTS GetCapabilities GetTile 最近要了解Web GIS方面的知识,对我 ...

最新文章

  1. ALEIDoc EDI(8)--Serialization
  2. 《Log4j 2 官方文档》Scripts
  3. 实验6_MPEG音频编码实验
  4. iOS项目组件化历程
  5. sklearn自学指南(part25)--正交分解
  6. python2.7安装pip_RobotFramework安装过程遇到的问题(电脑同时安装python2和3)
  7. 什么是空间分配担保策略?
  8. 随想录(内存屏障示例代码)
  9. 今天给2010买的三星R428升级一下固态硬盘
  10. Conditional Expectation Entropy
  11. [转]35岁前程序员要规划好的四件事,健康居首位
  12. 【个人笔记】OpenCV4 C++ 快速入门 00课
  13. 前端传递数组给后端,多个相同key,对应不同值
  14. 如何在线查看.mmap格式文件
  15. 电磁兼容的PCB设计(一)
  16. 《自然语言处理简明教程》读书笔记:前言
  17. 面向车路协同的路侧感知仿真系统
  18. stm32c8t6+bq76940 930 资料stm32c8t6+bq76940 锂电池管理系统(BMS)
  19. 中望cad文字显示问号怎么办_CAD文件打开后有很多问号怎么办
  20. a卡 n卡 html5性能,a卡n卡天梯图_a卡n卡显卡性能对照表2020年5月

热门文章

  1. 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上) 试读版
  2. 如何使用 Node.js 访问 SAP HANA Cloud 数据库里的数据
  3. SAP 3D visual enterprise viewer 9.0 的下载方式
  4. Angular单元测试的spyOn使用一例
  5. Angular ERROR NullInjectorError: R3InjectorError(AppModule)的错误分析
  6. Angular开发遇到的一个错误消息 - Expected linebreak to be LF(和本地文件的换行设置有关)
  7. SAP Spartacus CurrentProductService返回的null对象
  8. 使用URL直接进入SAP CRM WebClient UI某个订单的明细页面
  9. SAP UI5 Repository and MongoDB Repository
  10. Cloud for Customer动态控制任意UI element的visibility