本文介绍了如何在OpenLayers 4上将SVG图像用作图层的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图基于 ol.source.ImageStatic
为OpenLayers 3提供这种方法
到OpenLayers 4,没有结果:
I tried to adpot this approach based on ol.source.ImageStatic
for OpenLayers 3 https://stackoverflow.com/a/36183738/2797243to OpenLayers 4, with no result:https://codepen.io/itsonit/pen/jYKMMz?editors=0010
您可以在此处找到OL4的当前 ol.source.ImageStatic
示例:
The current ol.source.ImageStatic
example for OL4 you can find here: https://openlayers.org/en/latest/examples/static-image.html
如何是否可以将SVG源加载到OpenLayers 4映射?
How is it possible to load a SVG source to a OpenLayers 4 map?
推荐答案
该功能似乎取决于SVG数据。一个工作示例:
The functionality seems to depend on the SVG data.. A working example:
var svgComment = '<svg width="160" height="160" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" viewPort="0 0 160 160" class="svgClass">'
+ '<circle cx="30" cy="30" r="10" stroke="rgb(0, 191, 255)" stroke-width="1" fill="none" opacity="0.8">'
+ '<animate attributeType="CSS" attributeName="stroke-width" from="1" to="30" dur="0.5s" begin="0s" repeatCount="indefinite" />'
+ '<animate attributeType="CSS" attributeName="opacity" from="0.8" to="0.2" dur="0.5s" begin="0s" repeatCount="indefinite" />'
+ '</circle>'
+ '<circle cx="30" cy="30" r="10" fill="rgba(0,0,0,0.8)">'
+ '</circle>'
+ '</svg>';
//Test SVG
//var img = document.createElement('img');
//img.src=src;
//document.body.append(img);
var commentStyle = new ol.style.Style({
image: new ol.style.Icon({
src: 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svgComment)
})
});
var vectorSource = new ol.source.Vector({
features: [
new ol.Feature({
geometry: new ol.geom.Point([0, 0])
})
]
});
var vectorLayer = new ol.layer.Vector({
name: 'Comments',
style: commentStyle,
source: vectorSource
});
//display the map
var rasterLayer = new ol.layer.Tile({
source: new ol.source.TileJSON({
url: 'https://api.tiles.mapbox.com/v3/mapbox.geography-class.json?secure',
crossOrigin: ''
})
});
var map = new ol.Map({
layers: [rasterLayer, vectorLayer],
target: document.getElementById('map'),
view: new ol.View({
center: [0, 0],
zoom: 3
})
});
<script src="https://openlayers.org/en/v4.6.4/build/ol.js"></script>
<div id="map" class="map"></div>
这篇关于如何在OpenLayers 4上将SVG图像用作图层的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!